强制循环执行nodejs的顺序

时间:2015-05-25 17:34:32

标签: javascript node.js asynchronous foreach

names = ["jack", "matt", "lisa", "jacob"];
names.forEach(function(name) {
    getID(name);
});

循环以随机顺序执行。如何强制按顺序执行它们:

  1. 名称[0]
  2. 名称[1]
  3. 名称[2]
  4. 名称[3]

1 个答案:

答案 0 :(得分:0)

您的forEach()循环已经按照项目在数组中出现的顺序执行,因此您的问题假设不正确。

你可以很简单地看到:

function log(x) {
  var div = document.createElement("div");
  div.innerText = x;
  document.body.appendChild(div);
}

var names = ["jack", "matt", "lisa", "jacob"];
names.forEach(function(name) {
    log(name);
});

所以,如果你看到一些乱序,那可能是因为getID()包含了一个异步操作。因此,您一次启动四个异步操作,虽然它们是按顺序启动的,但它们并不是按顺序完成的。

如果您向我们展示getID()的代码并描述您的排序问题,那么我们可能会帮助您弄清楚如何将异步结果排序为正确的顺序。

Promise是许多人帮助管理异步操作顺序的首选工具,但我们需要查看getID()代码才能知道如何更具体地推荐要更改的代码。