Javascript node.js异步函数
我有一些node.js的代码 我想做两个平行的任务,我不在乎它们以什么顺序完成。最后两者都会在数据库中插入一些内容,但我必须先做一些计算和一些字符串替换 当我运行此位时,测试函数总是首先完成,这正常吗 我执行代码10-20次,测试总是在test2之前完成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
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;
}