JS Обещания: Обещания выполняются / разрешаются при назначении переменной - PullRequest
1 голос
/ 17 марта 2020

Я пытаюсь присвоить new Promise() переменной, а затем pu sh этой переменной в массиве, в результате чего получается массив обещаний. Затем я хочу выполнить этот массив обещаний позже при нажатии кнопки.

Но при присвоении 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;
}

По Когда массив обещаний возвращается в метод ProcessExamples, все обещания были разрешены. Это не то, что я хочу, что я могу сделать?

Я пытался заменить лямбду ( resolve, reject ) => {} на function( resolve, reject ) {} - ничего не сделал.

Я определил, что она разрешается еще до того, как он был помещен в массив Promises, поэтому я предполагаю, что это происходит при назначении на lPromise

1 Ответ

6 голосов
/ 17 марта 2020

Но при назначении Promise для переменной, он просто выполняется сразу.

Да, это то, что делает конструктор Promise (он немедленно выполняет свою функцию обратного вызова и передает разрешение) и отклонить функции, которые обратный вызов может вызвать, когда он завершится).

Если вы хотите что-то, что вы можете выполнить позже, тогда используйте функцию вместо обещания. (Функция может вернуть обещание).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...