这对我来说有点神秘。我有两个功能:
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循环进入第二个函数?
答案 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));
});
}
});