我怎样才能在 NodeJs 中做线程?
How can I do Threads in NodeJs ?
仅当函数 generateTilesIfReady 已完成执行时,我才想移动到下一次迭代
for (var i = 0; i<dataFilePaths.length; i++){
generateTilesIfReady(tilePaths[i], dataFilePaths[i], dataSetNames[i]);
}
我如何在 NodeJs 上执行此操作?
你还没有提到什么generateTilesIfReady
returns。让我们假设它 returns 承诺。
如果你在node 8以上,你可以使用async,await,这样写
const generateTilesIfReady = (i) => {
return new Promise(resolve => setTimeout(() => resolve('test'), 3000));
}
async function runnerFunction () {
for (var i = 0; i< 5; i++){
const result = await generateTilesIfReady(i);
console.log(result);
}
}
runnerFunction();
低版本节点可以使用async library times operator
const async = require("async");
const generateTilesIfReady = (i, callback) => {
setTimeout(function() {
callback(null, i);
}, 200);
}
function runnerFunction () {
async.times(5, function(n, next) {
generateTilesIfReady(n, function (err, result) {
next(err, result)
});
}, function(err, results) {
console.log(results);
});
}
runnerFunction();
仅当函数 generateTilesIfReady 已完成执行时,我才想移动到下一次迭代
for (var i = 0; i<dataFilePaths.length; i++){
generateTilesIfReady(tilePaths[i], dataFilePaths[i], dataSetNames[i]);
}
我如何在 NodeJs 上执行此操作?
你还没有提到什么generateTilesIfReady
returns。让我们假设它 returns 承诺。
如果你在node 8以上,你可以使用async,await,这样写
const generateTilesIfReady = (i) => {
return new Promise(resolve => setTimeout(() => resolve('test'), 3000));
}
async function runnerFunction () {
for (var i = 0; i< 5; i++){
const result = await generateTilesIfReady(i);
console.log(result);
}
}
runnerFunction();
低版本节点可以使用async library times operator
const async = require("async");
const generateTilesIfReady = (i, callback) => {
setTimeout(function() {
callback(null, i);
}, 200);
}
function runnerFunction () {
async.times(5, function(n, next) {
generateTilesIfReady(n, function (err, result) {
next(err, result)
});
}, function(err, results) {
console.log(results);
});
}
runnerFunction();