请考虑以下代码段( 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
并执行两次回调?
答案 0 :(得分:1)
根据@Benjamin Gruenbaum的建议,我发表评论作为答案:
同步和异步调用之间没有区别。
问题是您的回调是在result.notify("Notify: sync");
被解雇后注册的。