我怎样才能在 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 上执行此操作?

你还没有提到什么generateTilesIfReadyreturns。让我们假设它 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();