不确定这是否可行,但我会试一试.我有一个延迟函数,它调用服务器来创建或更新和对象.例如:
var createOrUpdate = function(item) {
var self = this;
var deferred;
if (item.id && item.id > 0) {
updated = true;
deferred = update.call(self, params);
} else {
deferred = create.call(self);
}
return deferred;
};
其中create和call方法返回deferred自己.这将允许我打电话
foo.createOrUpdate(bar).then(function(response) {
// something happened
});
但是,我希望能够添加一些自定义的延迟处理程序,以便我可以这样做
foo.createOrUpdate(bar).created(function(response) {
// an item was created
}).updated(function(response) {
//an item was updated
});
首先,这是可能的吗?其次,如果是这样,我该怎么做呢.
基本上我想创建一个自定义的延迟处理程序.
非常感谢.
解决方法:
没有真正测试:
var createOrUpdate = function(item) {
return {
isUpdated : item.id && item.id > 0,
created : function(cb) {
if (! this.isUpdated)
create.call(self).then(cb);
return this;
},
updated : function(cb) {
if (this.isUpdated)
update.call(self, params).then(cb);
return this;
}
};
};
foo.createOrUpdate(bar)
.created(function(response) {
// an item was created
})
.updated(function(response) {
//an item was updated
});
标签:jquery,javascript,deferred 来源: https://codeday.me/bug/20190703/1370234.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。