如何在循环中调用promise

时间:2014-09-23 14:43:24

标签: javascript coffeescript q

我必须在循环中调用一些代码异步代码。我尝试使用promises,但迭代器没有像我期望的那样受到约束。 当我做

之类的事情
for n in [1,2,3]
  console.log "PRINT:" + n
  Q()
  .then =>
    console.log "PRINT:" + n

打印

PRINT:1
PRINT:2
PRINT:3
PRINT:3
PRINT:3
PRINT:3

我知道这是因为首先执行循环然后承诺开始解决。我想知道如何使用不同的n值调用promise链中的每个print(或者为数组中的不同值执行promise链的任何方式)。

编辑:根据评论中的要求,我在JS中的代码看起来像这样

var n, _i, _len, _ref;

_ref = [1, 2, 3];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
  n = _ref[_i];
  console.log("PRINT:" + n);
  Q().then((function(_this) {
    return function() {
      return console.log("PRINT:" + n);
    };
  })(this));
}

0 个答案:

没有答案