首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Node上正确重试语句?

如何在Node上正确重试语句?
EN

Stack Overflow用户
提问于 2016-11-28 03:43:42
回答 2查看 495关注 0票数 1

这是我的原始代码,基本上它试图接受“交换报价”,如果它失败了,它就会被拒绝。我如何让它在两秒钟的间隔内对相同的“交换报价”重试这个语句10次,如果之后仍然失败,则拒绝报价?

代码语言:javascript
复制
try {
    offers.acceptOffer({tradeOfferId: offer.tradeofferid}, function(err, log) {
        if (err) { 
            helper.log('Error accepting trade offer ' + offer.tradeofferid, 891, err);
            offers.declineOffer({tradeOfferId: offer.tradeofferid}, function() {
                currentGameOffers.splice(currentGameOffers.indexOf(offer.tradeofferid), 1);
            });     
            return;
        }
EN

Stack Overflow用户

发布于 2018-06-20 02:50:55

我想稍微扩展一下@AndréWerlang的答案。我的问题是,我不得不进行成百上千的调用(由于应用程序接口的限制),并且在所有承诺完成后,我还利用Promise.all()返回所有数据。这可能不是Promise.all()的理想用法,甚至不是正确的用法-但在错误处理方面,它的工作方式符合我的预期:

代码语言:javascript
复制
const requestPromise = (req) => {
    return new Promise((resolve, reject) => {
        const maxRetries = 5;
        function tryRequest(retries) {
                // try a request (http)
                if (someErr) {
                    setTimeOut(()=>{ tryRequest(maxRetries--); }, 2000);
                    return;
                }
                else {
                    // resolve your Promise
                    resolve(data);
                }
        }
    });
}
票数 -1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40833148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档