【发布时间】:2017-01-06 22:23:47
【问题描述】:
正如标题所说,我想向服务器发送$http.get请求,直到返回的结果满足条件。
这是我尝试过的:
var searchComplete = false;
var sendGetReq = true;
while(!searchComplete) // #2 and then jumps here
{
if(sendGetReq)
{
sendGetReq = false; // #1 execution reaches here
$http.get('/user/getCondition', {params: {condition: $scope.condition}).
success(function (condition, status, headers, config) {
...
...
if(condition)
{ searchComplete = true; }
else
{ sendGetReq = true; }
}
}
但是,$http.get 请求永远不会执行。该声明从未达到。调试的时候看到执行会到sendGetReq=false,然后跳转到while(!searchComplete)。永远不会发送 GET 请求。
谁能解释一下:
- 为什么执行永远达不到 GET 请求并跳回
- 执行此连续 GET 请求的推荐方法是什么
谢谢。
【问题讨论】:
-
使用
.then,而不是.success,你应该让它成为一个递归函数。不要期望同时使用一段时间和承诺的完美行为。让自己成为一个函数,一旦 promise 返回就会调用自己。