大佬教程收集整理的这篇文章主要介绍了javascript – 在不使用jquery的情况下实现Deferred对象,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在纯js(编辑)中执行以下实现:
function Deferred() { var d = {}; d.resolve = function() { d.done(arguments); } d.reject = function() { d.fail(arguments); } d.promise = function() { var x = {}; x.done = function(args) { return args; } x.fail = function(args) { return args; } return x; } return d; } var v; var SETVAL = function() { var d = new Deferred(); setTimeout(function() { v = 'a value'; d.resolve(this); },5000); return d.promise(); }; SETVAL().done(function() { console.log('all done :' + v); });
但是上面给出了错误:Object#< Object>没有方法’失败’
我知道Deferred()函数的返回对象’d’没有方法done().如果我从Deferred()返回d.promise,则不会有解析和拒绝函数.
请指出我为实现Deferred对象的简单目标所犯的错误.
这是我正在做的小提琴:http://jsfiddle.net/SyEmK/14/
function Deferred(){ this._done = []; this._fail = []; } Deferred.prototype = { execute: function(list,args){ var i = list.length; // convert arguments to an array // so they can be sent to the // callBACks via the apply method args = Array.prototype.slice.call(args); while(i--) list[i].apply(null,args); },resolve: function(){ this.execute(this._done,arguments); },reject: function(){ this.execute(this._fail,done: function(callBACk){ this._done.push(callBACk); },fail: function(callBACk){ this._fail.push(callBACk); } } var v; var SETVAL = function() { var d = new Deferred(); setTimeout(function() { v = 'a value'; d.resolve(this); },5000); return d; }; SETVAL().done(function() { console.log('all done :' + v); });
以上是大佬教程为你收集整理的javascript – 在不使用jquery的情况下实现Deferred对象全部内容,希望文章能够帮你解决javascript – 在不使用jquery的情况下实现Deferred对象所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。