Wal*_*uch 2 javascript asynchronous callback
我想写一个函数,它接受一个回调并在函数完成后调用它.
这很简单:
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
Run Code Online (Sandbox Code Playgroud)
但是在这里我someFoo遇到了这个问题:首先是呼叫阻塞,直到allback完成.这意味着此代码等效于此(在每个函数完成之前阻塞):
someFoo('one');
callback('one');
someFoo('two');
callback('two');
Run Code Online (Sandbox Code Playgroud)
现在的问题是:如何使回调调用异步?
更改:
callback(ref);
Run Code Online (Sandbox Code Playgroud)
至:
setTimeout(function(){ callback(ref); }, 0);
Run Code Online (Sandbox Code Playgroud)
或者,由于您正在编写chrome扩展,因此不必担心旧版浏览器,您可以使用bind:
setTimeout(callback.bind(null, ref), 0);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
98 次 |
| 最近记录: |