parallel asynchronous @SimonHoiberg
# 今日句子
# 原文
JavaScript Tip 💡
Speed asynchronous tasks up by running them in parallel.
If the tasks don't rely on the result from the previous one, simply wrap them in Promise.all and run them in parallel.
It's much faster 🚀 查看原文 (opens new window)
# 翻译
JavaScript 小技巧 💡
通过并行执行,可以加速异步任务的速度。
如果任务相互间没有依赖,可以通过简单的Promise.all
并行运行它们。
真的快了很多 🚀
// 未优化
async function updateUserInfo() {
await updateUser({ id: 'abc124', lastLogin: new Date() });
await sendUpdateNotification({ userID: 'abc123' });
await cleanupOldLogs({ userID: 'abc123', cleanAll: true })
}
// 优化后
async function updateUserInfo() {
await Promise.all([
await updateUser({ id: 'abc124', lastLogin: new Date() }),
await sendUpdateNotification({ userID: 'abc123' }),
await cleanupOldLogs({ userID: 'abc123', cleanAll: true }),
])
}
# 单词
- asynchronous: adj.异步的;不同时的;不同期的;
- parallel:
- adj.平行的;相似的,同时发生的;并行的;并联的;
- n.相似的手法,共同点;相似的人;纬线,纬圈;
- v.与...相似;与...同时发生;与...并行;
- rely: v.相信,信赖;依靠,依赖;
- previous:
- adj.以前的,先前的;稍前的;过早的,过急的;
- n.前科,犯罪记录;
# 技术 - Promise.all
Promise.all (opens new window) 是一个异步处理方法,表示内部所有的异步方法并行执行,全部执行完毕后返回结果。
这个方法在我工作的 BFF
项目中有实际用到,场景是获取一个房屋信息详细页数据,微服务有把房屋照片、房屋基本信息以及地址分成三个接口。
所以就用到 Promise.all
一次发送三个请求,全部请求返回后才会处理数据。
async () => {
const results = await Promise.all([axios1, axios2, axios3])
console.log('results: ', results);
}
Last Updated: 2/28/2022, 2:55:18 PM