JS 承诺:分配给变量时,承诺正在执行/解析

Kes*_*ker 1 javascript promise

我正在尝试将 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;
}
Run Code Online (Sandbox Code Playgroud)

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

我试着更换拉姆达( resolve, reject ) => {}function( resolve, reject ) {}-那什么也没做。

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

Que*_*tin 6

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

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

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