В этом упрощенном примере я вызываю три функции, когда первое обещание будет разрешено.
var test = new Promise(function (res, err) { setTimeout(res, 3000) })
test.then( () => { console.log("A") });
test.then( () => {
return new Promise(function(res, err) {
setTimeout(()=> { console.log("C");
res() }, 3000)
});
});
test.then( () => { console.log("B") });
Результат, как и ожидалось, равен A B C
.
Предположим, что я хочувызывайте третий .then
на консоль B
только тогда, когда второе обещание будет выполнено.
Если я попытаюсь сохранить второе обещание (myProm
) в глобальном масштабе и прикрепить к нему функцию .then
, я получу (разумно) TypeError, потому что во время компиляции myProm все еще не определен.
var test = new Promise(function (res, err) { setTimeout(res, 3000) })
var myProm;
test.then( () => { console.log("A") });
test.then( () => {
myProm = new Promise(function(res, err) {
setTimeout(()=> { console.log("C");
res() }, 3000)
})
return myProm;
});
myProm.then( () => { console.log("B") });
Как мне поступить?Каков наилучший способ связать два обещания вместе, так что возвращаемый объект Promise из одного .then
должен быть разрешен, прежде чем мы сможем выполнить следующее then
.
В этом сценарии вывод, который я хотел быиметь будет A C B