我想编写一个接受回调并在函数完成后调用它的函数。
这很简单:
var callback = function (ref) {
var i = 1337;
while (i--) {
console.log(ref, 'callback');
}
};
var someFoo = function (ref, callback) {
console.log(ref, 'self');
callback(ref);
}
someFoo('one', callback); // 1
someFoo('two', callback); // 2
但在这里我遇到了这个问题:首先 someFoo
调用阻塞,直到 allback 完成。这意味着此代码等同于此(在每个函数完成之前阻塞):
someFoo('one');
callback('one');
someFoo('two');
callback('two');
现在的问题是:如何使回调调用异步?
最佳答案
改变:
callback(ref);
收件人:
setTimeout(function(){ callback(ref); }, 0);
或者,由于您正在编写 chrome 扩展程序,因此不必担心较旧的浏览器,您可以使用 bind :
setTimeout(callback.bind(null, ref), 0);
关于javascript - 不阻塞的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17750411/