【发布时间】:2019-05-24 02:58:45
【问题描述】:
在这个简化的示例中,当第一个承诺得到解决时,我将调用三个函数。
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 只有当第二个承诺得到解决。
如果我尝试将第二个 Promise (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 返回的 Promise obj。
在这种情况下,我希望得到的输出是A C B
【问题讨论】:
-
test.then(...).then(...)…?!
标签: javascript promise