使用 async-await
等待异步操作完成的时候,如果前后两个异步操作不存在依赖关系,同时触发应该是更好的方案。
因为 await
后面必须跟一个 Promise
实例,于是可以用 Promise.all()
这个方法把多个 Promise
实例合并成一个 Promise
实例。Promise.all()
接收一个部署了 Iterator 的对象(例如:数组、Set),每个成员都必须是 Promise
实例,且只有当每个成员的状态都是 fulfilled 的时候,总实例的状态才是 fulfilled,否则是 rejected。
Promise.all()
用法示例:
const wait = ms => new Promise((resolve, reject) => { setTimeout(() => { console.log(`wait ${ms}ms`) resolve() }, ms) }) const PA = Promise.all([wait(3000), wait(1000), wait(2000)]) // 依次打印:wait 1000ms wait 2000ms wait 3000ms
async-await
同时触发多个异步操作示例:
const wait = ms => new Promise((resolve, reject) => { setTimeout(() => { console.log(`wait ${ms}ms`) resolve() }, ms) }) ;(async () => { await Promise.all([wait(3000), wait(1000), wait(2000)]) // 依次打印:wait 1000ms wait 2000ms wait 3000ms })()