【发布时间】:2017-06-29 16:51:58
【问题描述】:
我在控制器中有这些代码,它们使用 $http get 调用 webservice 来检索一些数据。下面是代码:
更新代码:
var boolGetBoothCoords = false;
BoothDesignatedCoordsService.getBoothDesignatedCoords(strListShortListedBooth[i], 3)
.then(function(response) {
var data = response.data
console.log('data', data.arrBoothDesignatedCoords)
boothDesignatedCoords = data.arrBoothDesignatedCoords;
boolGetBoothCoords = true;
})
console.log("boothDesignatedCoords ", boothDesignatedCoords ); // undefined
// And a lot of other codes
但是,由于 $http get 是异步方法,程序会立即调用控制台日志和后面的代码,并且还没有定义 standDesignatedCoords。我不要那个。我希望程序仅在 Web 服务消费完成后才调用控制台日志和代码。所以我使用这个答案做了以下事情:how to slow down a javascript loop:
go();
function go() {
console.log("hello");
if (boolGetBoothCoords == false) {
setTimeout(go, 1000);
}
else
{
}
}
go()
console.log("boothDesignatedCoords ", boothDesignatedCoords ); // undefined
// OTHER CODES that uses variable boothDesignatedCoords will be undefined as well
但是,我不知道为什么它仍然会调用控制台日志,但是尽管使用了这种方法,但是Web服务消费还没有完成。有人可以帮帮我吗?谢谢。
【问题讨论】:
-
为什么不在最后一个
then回调中包含console.log,在fnProceedOtherTask1()调用旁边? -
很抱歉造成混淆。我已经更新了我的问题
-
仍然,最好在最后一个回调中打印它而不是使用
setTimeout等待...如果服务器响应时间超过 1 秒会发生什么?它仍然是未定义的 -
我想我误解了 setTimeOut 的工作原理。你能向我解释一下 setTimeOut 在这种情况下是如何工作的吗?
-
哦,我明白你在这里要做什么......我会写一个答案
标签: javascript jquery angularjs timeout settimeout