【前端】ES5 实现类似 ES6 中 Promise.all 的效果的若干种方法
2017-10-12 17:18
866 查看
ES5 + jQuery.when
var urlArr = ["/", "/user/login/"]; var ajaxArr = []; for (var i = 0; i < urlArr.length; ++i) { (function (url) { console.log(url) ajaxArr.push($.ajax(url)); })(urlArr[i]) } $.when.apply(null, ajaxArr).then(function () { console.log(arguments) });
ES5 + jQuery
var urlArr = ['a.html','b.html','c.html','d.html','e.html','f.html']; var resolveCount = 0; var rejectCount = 0; for (var i = 0; i < urlArr.length; ++i) { $.get(urlArr[i]) .done(function(data, textStatus, jqXHR) { console.log('=====done=======') // do something ++resolveCount; }) .fail(function(jqXHR, textStatus, errorThrown) { console.log('=====fail=======') // do something ++rejectCount; }) .always(function() { console.log('=====always=======') console.log(arguments); var doneCount = resolveCount + rejectCount; console.log("doneCount:", doneCount); if (doneCount === urlArr.length) { console.log('all done!!!') // do something } console.log('=====always end=======') }) }
ES5 + Underscore
var urlArr = ['a.html', 'b.html', 'c.html']; var allDone = function () { console.log('all done'); // do something } var allDone = _.after(urlArr.length, allDone) for (var i = 0; i < urlArr.length; ++i) { $.get(urlArr[i]).done(function () { console.log(urlArr[i], 'done'); // do something }).fail(function () { console.log(urlArr[i], 'fail'); // do something }).always(function () { allDone(); }) }
ES6 + Promise
var urlArr = [/*... ...*/]; var promiseArr = []; for (let i = 0; i < urlArr.length; ++i) { let p = new Promise(resolve => { $.get(urlArr[i], res => { // do something resolve(); }) }); promiseArr.push(p); } Promise.all(promiseArr).then(() => { // do something })
相关文章推荐
- 用async-await实现类似Promise.all()的执行效果
- ajax实例:如何使用json+ajax的方法实现类似前端特效tab切换效果
- jQuery实现类似淘宝网图片放大效果的方法
- dojo的connect方法使用与源代码剖析(在JavaScript里实现类似AOP的效果)
- dojo的connect方法使用与源代码剖析(在JavaScript里实现类似AOP的效果)
- ES5和ES6中对于继承的实现方法
- Android编程实现类似天气预报图文字幕垂直滚动效果的方法
- es6 Promise.all()方法
- javascript简单实现类似QQ头像弹出效果的方法
- mfc下鼠标拖动画面使视图移动的实现方法,类似浏览PDF时用手型鼠标移动视图的效果
- 实现 Promise/A+ 规范 & ES6 Promise方法
- dojo的connect方法使用与源代码剖析(在JavaScript里实现类似AOP的效果)
- es5、promise、async以及generator中实现sleep的方法
- javascript setTimeOut方法 实现滑动效果(类似2D加速)
- 利用ES6的Promise.all实现至少请求多长时间
- js实现类似jquery里animate动画效果的方法
- ES5和ES6中对于继承的实现方法
- 利用ES6的Promise.all实现至少请求多长时间的实例
- dojo的connect方法使用与源代码剖析(在JavaScript里实现类似AOP的效果)
- javascript简单实现类似QQ头像弹出效果的方法