【发布时间】:2017-07-04 10:48:13
【问题描述】:
我尝试循环遍历相同的 API 结果,如果 API 结果为 NULL,那么我想使用不同的参数再次循环几次(即 4-5 次),并且如果达到第 5 次。我想退出循环。我正在尝试的代码如下所示:
var roads = 1000;
var findResult = true;
var loop = 0;
while (findResult) {
result = APIResult(rarray, roads);
if (result !== null) {
findResult = false; // stop the loop
} else if (loop == 5) {
findResult = false; // stop the loop
} else {
roads = roads * 10;
loop++;
}
}
function APIResult(rarray, roads) {
request.post(
env.TEST_URL + 'test/',
{
json: {
//...
roads: roads,
//..
},
},
function(error, response, body) {
if (!error && response.statusCode == 200) {
return JSON.parse(body.rows[0].result);
}
});
}
我什至尝试添加 Q 承诺但没有奏效,知道怎么做吗?
【问题讨论】:
-
哪里失败了?
-
在上面的例子中它永远不会失败,它只是保持循环。
-
把你的循环++放在所有 if else 条件之外。
-
您正在检查 APIResult 的值,这似乎是异步方法。使用回调,然后超时可能会等待一段时间,然后再次访问 API。
-
@Chandra Eskay 将 loop++ 放在外面没有用。