如何在不阻塞节点的情况下重复请求直到成功?

编程入门 行业动态 更新时间:2024-10-07 14:31:31

如何在不阻塞<a href=https://www.elefans.com/category/jswz/34/1771452.html style=节点的情况下重复请求直到成功?"/>

如何在不阻塞节点的情况下重复请求直到成功?

我有一个接受参数和回调的函数。它应该向远程 API 发出请求并根据参数获取一些信息。当它获取信息时,它需要将其发送到回调。现在,远程 API 有时无法提供。我需要我的函数不断尝试,直到它成功完成,然后然后用正确的数据调用回调。

目前,我在函数中有以下代码,但我认为像 while (

!done
);不是正确的节点代码。

var history = {};
while (true) {
    var done = false;
    var retry = true;
    var req = https.request(options, function(res) {
        var acc = "";
        res.on("data", function(msg) {
            acc += msg.toString("utf-8");
        });
        res.on("end", function() {
            done = true;
            history = JSON.parse(acc);
            if (history.success) {
                retry = false;
            }
        });
    });
    req.end();
    while (!done);
    if (!retry) break;
}
callback(history);

如何以正确的方式做到这一点?

回答如下:

无需重新发明轮子......您可以使用流行的异步实用程序库,在这种情况下为“重试”方法。

// try calling apiMethod 3 times
async.retry(3, apiMethod, function(err, result) {
    // do something with the result
});

// try calling apiMethod 3 times, waiting 200 ms between each retry
async.retry({times: 3, interval: 200}, apiMethod, function(err, result) {
    // do something with the result
});

异步 GitHub 页面

async.retry 文档

更多推荐

如何在不阻塞节点的情况下重复请求直到成功?

本文发布于:2024-05-30 08:41:16,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1770309.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:节点   情况下   如何在

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!