在使用node做后台的时候发现,可能同时处理多个异步,需要多个异步全部执行完毕再进行响应。
然而异步是无序的,我们并不知道哪一个异步最后处理完毕,此时可以使用promise来处理;
- new Promise((resolve,reject)=>{// 代码})
- 若是执行resolve方法则是处理成功,相当于调用.then方法;
- 若是执行reject方法即处理失败,执行.catch方法;
- Promise.all([异步方法]).then(res=>{//处理})
- res是一个数组,存储多个异步的调用结果
- 举例说明
- 此时可以随意处理异步结果的顺序了
usersTable.find((err, results) => {
if (err) {
reject('异步API的失败执行结果')
} else {
resolve(results)
}
})
})
let p2 = new Promise((resolve, reject) => {
setTimeout(() => {
if (true) {
resolve('异步API的执行结果')
} else {
reject('异步API的失败执行结果')
}
}, 2000)
})
Promise.all([p1, p2]).then(data => {
console.log(data, 'data')
console.log('结果')
})
- 注:resolve,reject方法的返回值只能有一个!