当我在typescript中遇到执行顺序的问题时,我正在尝试实现一些功能:
代码:
new Promise((resolve) => {
setTimeout(()=>{
console.log("function11111");
resolve();
}
,3000);
})
.then(_=>{
setTimeout(()=>{
console.log("function22222");
}
,2000);
})
.then(_=>{
setTimeout(()=>{
console.log("function3333333");
}
,1000);
})
OutPut:
function11111
function33333
function22222我的问题是:
1)对于function1111,如果我们用一个耗时几秒的函数替换这个console.log('fucntion1111'),在这种情况下,我的代码将在函数执行完成之前触发resolve(),那么如何确保等待我的函数
2)在我正在做的代码中,为什么执行不尊重我的顺序?我在想,promise就是为了这个目的而创建的。
发布于 2018-12-26 06:12:15
问题是,一旦调用了初始resolve(),所有的then处理程序都会同时被调用。由于每个都有不同的超时,因此输出顺序为function33333 and then functon2222。
要维护订单,您可以执行promise链接,它将在调用下一个then()块之前等待前一个promise得到解析。
我已经把诺言用链子锁住了。如果你需要更多的澄清,请让我知道。
new Promise((resolve) => {
setTimeout(()=>{
console.log("function11111");
resolve();
}
,3000);
})
.then(_=> new Promise(resolve => {
setTimeout(()=>{
console.log("function22222");
resolve();
}
,2000);
})
)
.then(_=> new Promise(resolve => {
setTimeout(()=>{
console.log("function3333333");
resolve();
}
,1000);
})
);
https://stackoverflow.com/questions/53925870
复制相似问题