作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
<分区>
如果我想自己实现deferred,这样做是否正确(试图理解内部逻辑):
延迟算作一种行为模式吗?
deferred 和 promise 有什么区别?
function Deferred() {
var d = {},
f = {},
a = {},
state = 'pending';
return {
resolve: function(){
state = 'resolved';
a.fn.apply(a.context, arguments);
d.fn.apply(d.context, arguments);
},
reject: function(){
state = 'rejected';
a.fn.apply(a.context, arguments);
f.fn.apply(f.context, arguments);
},
done: function(fn, context) {
d = {fn: fn, context: context};
return this;
},
fail: function(fn, context) {
f = {fn:fn, context: context};
return this;
},
always: function(fn, context) {
a = {fn:fn, context: context};
return this;
},
state: state
}
}
应用示例:
var obj = Deferred();
obj.done(function(arg){
console.log('we are done here. why? -', arg);
}, window)
.always(function(arg){
console.log('print that in any case. and some details:', arg);
}, window)
.fail(function(arg){
console.log('we failed here. why? -', arg);
}), window;
obj.reject('some arguments');
obj.resolve({argument: 'hooray!'});
这个问题在这里已经有了答案: What are the differences between Deferred, Promise and Future in JavaScript? (5 个答案)
我在洗澡的时候想到了一些事情。 延迟/ promise 模式是减少callback hell ,通过允许开发人员链式调用函数,如前所述 here : Parse.User.logIn("user",
我是一名优秀的程序员,十分优秀!