gpt4 book ai didi

javascript - NodeJs - 使用请求模块在 while 循环中有条件地发出 'GET' 请求

转载 作者:行者123 更新时间:2023-11-30 21:18:03 26 4
gpt4 key购买 nike

我正在访问一个有点不确定的 API 端点。大约 70% 的时间它会发回正确的 JSON 响应,但有几次它会出错并发送一个 XML,上面写着“值/值”。我想做一个 while 循环什么请求,直到它得到正确的响应。在我的例子中,我保证最终会得到正确的响应,所以这就是为什么我循环而不是弄清楚端点崩溃的原因。

这是我的代码:

var gotValidResponse = false;

while(!gotValidResponse){
request(options, function(err, res, body){
if(err){
console.log(err);
return;
}

try{
data = JSON.parse(body);
console.log(data);
gotValidResponse = true;
}catch(e){
console.log('trying again');
}
});
}

processJSON(data);

显然上面的代码不起作用,但希望它显示了我正在尝试做的事情。感谢您的帮助!

编辑:像这样?

var myData = getStuff(options);

function getStuff(options){
request(options, function (err, res, body) {
if (err) {
console.log(err);
return
}

try {
data = JSON.parse(body);
return data;
} catch (e) {
return getStuff(options);
}
})
}

最佳答案

您几乎在编辑中做对了。您需要做的是继续调用该函数,直到它返回您想要的内容。像这样(我的条件只是说明性的):

var attemps = 1;
var fake = function(data, cb) {
console.log('Attemp nº', attemps);

if(attemps < 5) {
attemps += 1;
return fake(data, cb);
} else {
return cb(null, 'completed');
}
}

fake('whatever', function(err, res) {
console.log(res)
})

https://jsfiddle.net/eysu2amp/

如果您检查控制台,您会看到 fake 函数被调用了 5 次,然后返回了数据。函数的递归调用一直传递同一个回调函数。

关于javascript - NodeJs - 使用请求模块在 while 循环中有条件地发出 'GET' 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45471631/

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