async.parallel在节点js中不像异步一样工作

时间:2017-08-23 21:02:16

标签: node.js asynchronous

我有以下代码。

var async = require('async');

async.parallel({

        f2: function(callback){
            for (var i=0;i< 100000000;i++){

            }
            console.log("f2");
            callback(null,"function 2");
        },
        f1: function(callback){

            console.log("f1");
            callback(null,"function 1");
        },

    },
    function(err, results) {
        console.log(results);
    });

我跑到上面......

结果:

f2
f1
{ f2: 'function 2', f1: 'function 1' }

为什么首先得到f2? 为什么不f1? f1函数比f2函数简单。

我认为..我不能像异步一样。

我不想使用SetTimeOut,proccess.NextTick等......

1 个答案:

答案 0 :(得分:1)

函数parallel()是关于并行启动I / O任务,而不是关于代码的并行执行。如果您的任务不使用任何计时器或执行任何I / O,它们实际上将被串行执行。每个任务的任何同步设置部分将一个接一个地发生。 JavaScript仍然是单线程的。参考:https://caolan.github.io/async/docs.html#parallel