【发布时间】:2012-03-15 22:31:08
【问题描述】:
我正在使用 jQuery 延迟,并注意到一个奇怪的行为。
在此处查看小提琴:http://jsfiddle.net/wKTgP/1/
如果我使用 $.when 来调用一组承诺
$.when(promise1, promise2)
.progress(function (message1, message2) {
alert(message1 + ' ' + message2);
});
如果 promise1 发送通知“hello”,promise2 发送“world”,我会收到两个消息框:
'你好未定义'
和
'你好世界'
第一个通知显然显示了来自promise1 的消息,而promise2 还没有发送任何东西......但是第二个通知让我认为promise1 再次发送了“hello”,而promise2 第一次发送了“world”。 ..
这是什么故事?
【问题讨论】:
-
当 promise2 实现时,第一个 promise 仍处于“已实现”状态。
-
是的 - 我相信这是我感知“通知”的方式的问题 - 命名(通知)意味着“事件”类型机制,最好称其为“状态”,因为它实际上设置了延迟实例的“进度状态”。现在我明白了,它更有意义。
-
我之前没用过,但是在进度中激活时可能有通知清除机制?我也在努力理解它。
-
好的。如果你想要“hello undefined”和“undefined world”,我猜你可以解决或拒绝正在进行的承诺。