考虑以下代码段(demo):
function asyncCall() {
var result = $q.defer();
result.notify("Notify: sync");
setTimeout(function () {
result.notify("Notify: async (timeout)");
}, 1000);
return result.promise;
}
asyncCall().then(null /* success */, null /* error */,
function (notify) {
console.log("Caller Notify: " + notify);
}
);
我希望在控制台中看到第一个通知-
Notify: sync
-不会触发通知回调:Notify: sync
Notify: async (timeout)
但是我得到了:
Notify: async (timeout)
是否可以在同步上下文中“排队”
notify
调用并执行两次回调? 最佳答案
正如@Benjamin Gruenbaum所建议,我将对问题的评论作为答案:
同步调用和异步调用之间没有区别。
问题是result.notify("Notify: sync");
触发后您的回调已注册。
关于javascript - 在同步上下文中调用defer.notify()不会执行回调,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25341024/