繁体   English   中英

javascript重试Promise直到解决

[英]javascript retry promise until resolve

我有一些异步工作可能会失败并被拒绝。 我想重试直到解决。 已经找到了这种方法,但无法使其起作用。 dontGiveUp(doFirst)给我:未捕获的TypeError:f.then不是函数(…)

有人可以指出错误/或更好的方法吗?

function dontGiveUp(f) {
    return f.then(
        undefined, 
        function (err) {
                return dontGiveUp(f); 
        }
    );
}



function doFirst(In){
return new Promise(function(resolve, reject) {
    console.log("doFirst Done" + In);    
    if (Math.random() >= 0.5) {
        console.log("resolve");    
        resolve(In);
    }
    else
    {
    console.log("reject");    
    reject(In);  
    }
})
}

一种可能性是继续调用promise解析器函数,直到它被解析为止:

 function stubborn(promisedFunc) { var args = Array.from(arguments); return promisedFunc.apply(null, args.slice(1)).catch(function() { return stubborn.apply(null, args); }); }; rnd = function(a, b) { return new Promise(function(res, rej) { var x = Math.random(); document.write('trying ' + x + '<br>'); if(x > a && x < b) res(x) else rej(); }) }; stubborn(rnd, 0.3, 0.4).then(function(x) { document.write('finally ' + x + '!') }); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM