javascript – 如何使这个JS函数异步?

function takesTime(){

    for (var i = 0; i<some_very_large_number; i++){
        //do something synchronous
    }
    console.log('a');
}

takesTime();
console.log('b');

打印:
一个
b
你如何打印:
b
一个

我看到这是标记的node.js,所以我从这个角度来回答:你不应该。通常情况下,如果你被阻止,它将是:网络绑定(你应该使用和/或重用network libraries关于异步方法),I / O绑定(你应该使用和/或重用I/O libraries)或CPU-界。你没有为长期运行的任务提供任何上下文,并且假设你有一个包含some_very_large_number的循环不变量,我假设你想象一些CPU密集型任务在一个大字段上迭代。

如果你实际上是CPU限制,你应该重新考虑你的策略。节点只生活在一个核心上,所以即使你能够使用多线程,你也只是在旋转你的轮子,因为每个请求仍然需要一定的CPU时间。如果你真的打算做一些计算密集型的事情,你可能需要研究一下使用queuing system,并且还要处理一些更好地设计用于处理数据的数据。

http://stackoverflow.com/questions/5786016/how-do-i-make-this-js-function-asynchronous

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:javascript – 如何使这个JS函数异步?