【发布时间】:2019-05-24 08:25:45
【问题描述】:
当我最终在 typescript 中遇到关于执行顺序的问题时,我正在尝试实现一些功能:
代码:
new Promise((resolve) => {
setTimeout(()=>{
console.log("function11111");
resolve();
}
,3000);
})
.then(_=>{
setTimeout(()=>{
console.log("function22222");
}
,2000);
})
.then(_=>{
setTimeout(()=>{
console.log("function3333333");
}
,1000);
})
输出:
function11111
function33333
function22222
我的问题是:
1)对于function1111,如果我们用一个需要几秒钟的函数替换这个console.log('fucntion1111'),在这种情况下,我的代码将在函数完成执行之前触发resolve(),那么如何确保等待我的功能
2)然后在我的代码中,为什么执行不尊重我的订单?我在想,promise 就是为此目的而创建的。
【问题讨论】:
-
执行确实遵守由 Promise 管理的代码顺序,但每个回调都会创建一个新的异步进程,不是由 Promise 管理。
-
setTimeout不返回 Promise。它会立即返回一个整数,因此.then()会立即执行。 (You can make it return a Promise, though)。在您的“真实世界”代码中,确保在每个.then()中返回一个 Promise
标签: javascript typescript promise es6-promise