Javascript node.js异步函数

Javascript node.js异步函数,javascript,node.js,async.js,Javascript,Node.js,Async.js,我有一些node.js的代码 我想做两个平行的任务,我不在乎它们以什么顺序完成。最后两者都会在数据库中插入一些内容,但我必须先做一些计算和一些字符串替换 当我运行此位时,测试函数总是首先完成,这正常吗 我执行代码10-20次,测试总是在test2之前完成 async.parallel([ function (callback) { v2 = test(200); callback(null, v2); }, function (callback) { v3 = test2

我有一些node.js的代码

我想做两个平行的任务,我不在乎它们以什么顺序完成。最后两者都会在数据库中插入一些内容,但我必须先做一些计算和一些字符串替换

当我运行此位时,测试函数总是首先完成,这正常吗

我执行代码10-20次,测试总是在test2之前完成

async.parallel([
function (callback) {
    v2 = test(200);
    callback(null, v2);
},
function (callback) {
    v3 = test2(300);
    callback(null, v3);
}
], function (err, results) {
    console.log(results)
});
我这里的测试函数将有2-3个嵌套for循环,将在内存中计算大量信息

function test(a) {
    for (var i = 0; i < 1000000; i++) {
        a = a + 1;
    }
    console.log('Finished 1');
    return a + 100;

}

这些不是实际的异步函数。它们同步运行,因此
async
库不能同时运行它们。它将按照您传递的顺序运行它们

认为您正在传递实际的异步函数,异步库将通过调用您传递的第一个函数来启动第一个操作,但您在该启动操作中完成所有工作,甚至调用完成回调。因此,在开始第二个操作之前,您的第一个操作已经完成


请记住,异步库不会使非实际异步操作的内容异步化。它只是帮助您管理和排序操作,其中一些操作可能是实际的异步操作。

您如何测试它是否首先完成?如果只是因为它是数组中的第一个元素,那是因为async将输出顺序保留为函数的顺序。
function test2(a) {

    console.log('Finished 2');
    return a + 200;

}