我使用了延迟对象,我有时想要通知同步(如果我已经将结果存储在缓存中)。
为什么它只收到最后一次通知?
var dfd = $.Deferred();
for(var i = 0; i < 3; i++){
dfd.notify(i);
}
dfd.progress(function(i){
console.log(i); // 2
// expected: 0, 1, 2
});
答案 0 :(得分:1)
您只收到一个通知,因为在调用notify后设置了进度。 如果您先设置进度方法,则会收到全部:
var dfd = $.Deferred();
dfd.progress(function(i){
console.log(i);
});
for(var i = 0; i < 3; i++){
dfd.notify(i);
}
这是因为当您设置进度方法并且已经调用了通知时,您可能只想接收最后一个值,因此您可以立即反映当前状态。