javascript - 不阻塞的回调

标签 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

但在这里我遇到了这个问题:首先 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/

相关文章:

javascript - AngularJS 也获取空数据

javascript - Bootstrap 片段搜索框无法正常工作

C Glib GIO - 如何异步列出文件

c++ - Delphi的回调函数在c中的使用方法

C++, SQLite - 指向字符串指针的指针

javascript - 从我的自定义任务运行任务?

javascript - jQuery + Fancybox 在点击某个元素后停止工作

Javascript.Run 同步多重 promise

javascript - Jest/enzyme : How to test for . 然后和嵌套异步函数的.catch

javascript - 在 Ruby on Rails 中实现作业完成时的通知/警报弹出窗口