Yur*_*rik 2 javascript node.js promise es6-promise
我需要继续调用远程API,直到我得到我需要的响应,并且我想在node.js中使用官方A + promises.同步psudo代码:
params = { remote api call params }
while (true) {
result = callRemoteApi(params)
if isGood(result) {
onSuccess(result)
break
}
params = modify(params)
}
Run Code Online (Sandbox Code Playgroud)
我正在使用request-promise lib来处理请求,结果可能是这样的:
new Promise(function (resolve, reject) {
var task = request({params})
.then(function (result) {
if (isGood(result)) {
resolve(result);
} else {
task = request({new params}).then(this_function);
}
});
Run Code Online (Sandbox Code Playgroud)
PS这与/sf/answers/1206715541/非常相似,但我想要一个非基于q的实现.
像这样的东西应该运作良好:
var remoteApiCall = function(num){
// fake function to resolve promise if random number in range
return new Promise(function(resolve, reject){
return ((Math.random()*10) < num)
? resolve(true)
: reject(false);
})
}
function getUntil(num){
return remoteApiCall(num).then(function(result){
if (result) {
return result
} else {
// call again until you get valid response
return getUntil(num)
}
})
}
getUntil(num).then(...)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1444 次 |
最近记录: |