值未传递给for循环

时间:2016-07-19 14:28:09

标签: javascript jquery json

这对我来说有点神秘。我有两个功能:

1)

var revisionNumber;
var $list = $('<ul>');

TFS_Wit_WebApi.getClient().getWorkItem(284)
    .then(function(query) {
        revisionNumber = query.rev;
    });

2)

for (i = 0; i < revisionNumber; i++) {
    TFS_Wit_WebApi.getClient().getRevision(284, 6)
        .then(function(query) {
            $list.append($('<li>').text("story board" + revisionNumber));
        });
}

reivisonNumber值应该是15.当在for循环中我将而不是变量放入数字15时,第二个函数和循环一样正常工作,它实际上显示了这个数字15。

如果我删除for循环,它也可以工作并从第一个函数中显示revisionNumber变量的值。

但是,当我将revisionNumber放在for循环中时,第二个函数根本不起作用。

为什么不使用上面的for循环进入第二个函数?

1 个答案:

答案 0 :(得分:0)

for循环可能正在执行getWorkItem().then()回调之前执行。在运行for循环之前,您需要等待该回调运行,方法是将其移入回调函数,或将其置于其自身的函数中并在回调中调用该函数。

例如:

var revisionNumber;
var $list = $('<ul>');

TFS_Wit_WebApi.getClient().getWorkItem(284).then(function (query) {
     revisionNumber = query.rev;
     for (i = 0; i < revisionNumber; i++) {
         TFS_Wit_WebApi.getClient().getRevision(284, 6).then(function (query) {
             $list.append($('<li>').text("story board" + revisionNumber));
         });
     }
});