项目中遇到需要等待任务执行完毕再执行下一步操作的情况。
很显然,这种情况最适合使用Promise。
第一步任务执行完毕,返回一个Promise,继续执行下一步任务,以此类推。
示例代码如下:
Promise.resolve()
.then(()=>{
//第一步要执行的任务
...
const data1 = ... //要往下传递的数据
Promise.resolve(data)
})
.then((res)=>{
console.log(res);//上一步传递过来的数据
//第二步要执行的任务
...
const data2 = ... //要往下传递的数据
Promise.resolve(data2)
})
.then((res)=>{
console.log(res);//上一步传递过来的数据
//最后一步要执行的任务
...
})
如果中间出现异步操作,那么直接返回一个new Promise即可,这样就可以等待异步操作完成再执行后面的操作:
Promise.resolve()
.then(()=>{
//第一步要执行的任务
...
const data1 = ... //要往下传递的数据
Promise.resolve(data)
})
.then((res)=>{
console.log(res);//上一步传递过来的数据
return new Promise((resolve,reject)=>{
setTimeout(()=>{
//第二步要执行的任务
...
const data2 = ... //要往下传递的数据
resolve(data2)
},1000)
})
})
.then((res)=>{
console.log(res);//上一步传递过来的数据
//最后一步要执行的任务
...
})
Promise.resolve()
.then(()=>{
//第一步要执行的任务
Promise.resolve()
})
.then(()=>{
//第二步要执行的任务
})
.then((res)=>{
console.log(res);//上一步传递过来的数据
//最后一步要执行的任务
...
})