我正在阅读MSDN上的教程。我遇到了一个关于pub / sub-approach的问题,我还无法理解。它是关于javascript中超时队列使用的声明。在尝试这个代码后,我完全糊涂了。在网页上:http://msdn.microsoft.com/en-us/library/hh404091.aspx
进一步向下是一个发布函数,在我发现这个声明之下:
“它使用setInterval函数,超时为0毫秒,以异步方式执行回调。这允许在前一个回调结束之前调用每个订阅者回调。这也意味着可以在其他回调之前调用回调回调已经完成。异步性的结果是你无法预测调用或完成回调的顺序。“
据我所知,函数回调是在执行的 它们被添加到队列的顺序。设置哪个计时器无关紧要。
任何人都可以验证这个吗?还是解释一下?
根据上述声明来自MSDN的代码:
that.publish = function (eventName, data) {
var context, intervalId, idx = 0;
if (queue[eventName]) {
intervalId = setInterval(function () {
if (queue[eventName][idx]) {
context = queue[eventName][idx].context || this;
queue[eventName][idx].callback.call(context, data);
idx += 1;
} else {
clearInterval(intervalId);
}
}, 0);
}
};