如何在NodeJ中执行线程?

时间:2017-10-23 09:54:55

标签: javascript node.js multithreading web-worker



   我只想在函数generateTilesIfReady完成执行

时才转到下一次迭代
 for (var i = 0; i<dataFilePaths.length; i++){
            generateTilesIfReady(tilePaths[i], dataFilePaths[i], dataSetNames[i]);
          }

我如何在NodeJ上执行此操作?

1 个答案:

答案 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();
相关问题