【发布时间】:2021-04-15 06:42:53
【问题描述】:
当我们使用链链接一个 Promise 的,并且 Promise 由 then 返回,那么不属于 then 的代码如何> 链条在所有链条完成之前运行?代码如何跳过 then 调用?不应该在运行“console.log”代码行之前执行所有调用吗?
代码如下:
Promise.resolve('333')
.then((res)=>{console.log(res);return new Promise((resolve,reject)=> {setTimeout(function(){console.log('Timeout');resolve(1);},10000);console.log('Something');})})
.then((res)=>{console.log(res);return new Promise((resolve,reject)=> {console.log('Something');resolve(2);})})
.then((res)=>{console.log(res);return new Promise((resolve,reject)=> {console.log('Something');resolve(3);})})
.then((res)=>{console.log(res);return new Promise((resolve,reject)=> {console.log('Something');resolve(4);})})
console.log("When?")
在输出“什么时候?”正在首先打印.. 现在我不明白这怎么可能,因为第一个回调将只在大约 10 秒内运行,只有在那之后,回调才会返回一个 Promise,它将运行第二个 then ? 也许我不明白 then 的回调如何“与”then 函数一起使用。 我认为 then 实现看起来有点像:
then(callback){
let value= callback();
if(value is promise){
return value;
}
return Promise.resolve(value)
}
【问题讨论】: