首页 > 解决方案 > JS Promises:分配给变量时,Promises 正在执行/解析

问题描述

我正在尝试将 a 分配new Promise()给一个变量,然后将该变量推送到一个数组,从而产生一个承诺数组。然后,我想稍后在单击按钮时执行这一系列承诺。

但是在将 分配Promise给变量时,它会立即执行。

ProcessExamples(){
    swal({
        title : 'Get Examples?',
        confirmButtonText: 'Yes',
    }).then( aRes => {
        if( aRes.value ){
            let lAllPromises = ExampleClass.GetExamplePromises();
        }
    });
}

static GetExamplePromises(){
    let lPromises = [];
    Examples.forEach( aExample => {
        let lPromise = new Promise( ( resolve, reject ) => {
            resolve( true );
        });
        lPromises.push( lPromise );
    });
    return lPromises;
}

当 Promise 数组返回给ProcessExamples方法时,所有的 Promise 都已解决。这不是我想要的,我该怎么办?

我试过用 - 替换 lambda ( resolve, reject ) => {}function( resolve, reject ) {}但什么也没做。

我已经确定它在被推送到Promises数组之前就解决了,所以我假设它在被分配到lPromise

标签: javascriptpromise

解决方案


但是当将 Promise 分配给变量时,它会立即执行。

是的,这就是 Promise 构造函数所做的(它立即执行它的回调函数并传递它解析和拒绝函数,回调可以在完成时调用)。

如果你想要一些你可以稍后执行的东西,那么使用一个函数而不是一个 Promise。(该函数可以返回一个承诺)。


推荐阅读