我只想在函数generateTilesIfReady完成执行
for (var i = 0; i<dataFilePaths.length; i++){
generateTilesIfReady(tilePaths[i], dataFilePaths[i], dataSetNames[i]);
}
我如何在NodeJ上执行此操作?
答案 0 :(得分:1)
您尚未提及generateTilesIfReady
返回的内容。让我们假设它返回了承诺。
如果你在节点8或更高版本,你可以使用async,等待和写这样的东西
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();