用async-await实现类似Promise.all()的执行效果
2018-02-06 11:04
761 查看
使用函数:
awaitAll(fn1, fn2, fn3...)
async function awaitAll(...fnArr) { if ({}.toString.call(fnArr[0]) === '[object Array]') { fnArr = fnArr[0]; } const fnNum = fnArr.length; const promiseArr = []; const resultArr = []; for (let i = 0; i < fnNum; i++) { promiseArr.push(fnArr[i]()); } for (let i = 0; i < fnNum; i++) { resultArr.push(await promiseArr[i]) } return resultArr; }
测试:
function wait(ms) {return new Promise(resolve => setTimeout(() => resolve(), ms));} async function fn1() { await wait(1000); console.log('fn1'); await wait(1000); return 'fn1'; } async function fn2() { await wait(3000); console.log('fn2'); return 'fn2'; } async function fn3() { console.log('fn3'); await wait(2000); return 'fn3'; } function fn4() { console.log('fn4'); return 'fn4'; } awaitAll(fn1, fn2, fn3, fn4).then(results => { console.log(results); }); // 在3秒后,返回结果列表
相关文章推荐
- 【前端】ES5 实现类似 ES6 中 Promise.all 的效果的若干种方法
- 使用Promise和async-await实现的一个异步遍历+同步执行任务的实例
- sleep()在ES7中利用Promise和async/await的优雅实现
- Unity Mac下Editor执行shell(实现类似win下直接bat的效果)
- 一种通过async/await实现函数同步执行的方式
- async/await - 6.使用Promise.all()让多个await操作并行
- js replace实现replaceAll效果
- Android 自定义实现类似QQ消息贝塞尔拖拽效果BezierView
- Promise和Async/Await用法整理
- Android基于ListView实现类似QQ空间的滚动翻页与滚动加载效果
- Async/Await替代Promise的6个理由
- 实现类似百度文库效果,防止用户下载。
- Android实现通用的ActivityGroup(效果类似Android微博客户端主界面),强烈建议不要再使用TabActivity
- Async/Await替代Promise的6个理由
- IOS类似翻页效果实现实例
- 实现类似google搜索效果,文本框输入智能提示,没有用ajax控件和第三方控件,完全手写代码
- GridView实现某列中相同值合并(不规则表),类似Execl中效果
- iOS开发- 实现类似于陌陌点点和探探首页切换效果类似
- Silverlight使用DataGrid的模板列(DataGridTemplateColumn)实现类似TreeListView控件的效果