ES6
我想继续调用此方法,直到它返回0作为结果。有时返回一个值需要5秒钟,有时需要10秒钟。有时它不返回值,但我想继续前进,直到它返回0.它应该等到答案回来或在10秒后超时才能调用它。
这是我尝试这个的方式,但由于某种原因它无法正常工作。
function method() {
doSomething(from_api).then(function (status) {
if(status != "0") {
method();
} else {
console.log("success");
}
}), function (error) {
method();
});
}
这样做的正确方法是什么?
答案 0 :(得分:0)
我猜你想要一个类似异步循环的东西。
function asynchronous_while(promise_provider, condition) {
return promise_provider().then(function (result) {
if (condition(result) === true) {
return asynchronous_while(promise_provider, condition);
} else {
return result;
}
});
}
asynchronous_while(function () { // promise provider
return getStatus(from_api);
}, function (result) { // condition
return result != "0";
}).then(function (result) {
console.log("success", result);
// result should now be "0";
});
完成所需的时间完全取决于getStatus(from_api)
何时返回0
。那可能从不。适用于的传统的相同陷阱。
答案 1 :(得分:0)
您的代码有效。你刚才有一个额外的右括号。 变化:
}), function (error) {
为:
}, function (error) {