gpt4 book ai didi

javascript - 如何重复请求直到成功而不阻塞 Node ?

转载 作者:IT老高 更新时间:2023-10-28 22:04:00 25 4
gpt4 key购买 nike

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

目前,我在函数中有以下代码,但我认为类似 while (!done);不是正确的 Node 代码。

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
});

async GitHub page

async.retry docs

关于javascript - 如何重复请求直到成功而不阻塞 Node ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18581483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com