有一个带有json的URL。有时候检索到的数据没有我想要的数据,那么我想请求它四次以上,直到我得到正确的结果。我怎么能用正确的方法做到这一点呢?当我调用这个函数时,返回速度非常快...它感觉它不是发出5个请求,而是只有一个。
我正在调用TryToUpdate函数。
const getText = new Promise((resolve, reject) => {
var retorno;
fetch('URL').then(i => i.json()).then(i => {
retorno = i ? .result[0] ? .edited_channel_post ? .text;
if (retorno.includes('Texto:')) {
resolve({
data: retorno,
});
} else {
reject('unavailable');
}
})
})
async function tryToUpdate(tries = 0) {
var retorno;
var tryNum = tries
if (tries >= 5) {
console.log('Cant update.');
return undefined;
} else {
getText
.then(i => retorno)
.catch(() => {
console.log('Cannot reach result. Try num:' + tryNum);
tryToUpdate(tryNum + 1);
});
}
}
我试着向一个URL发出5个请求,直到得到预期的结果。
2条答案
按热度按时间7eumitmz1#
根据我的理解,这个问题是一个UX问题,也就是说,它发生得太快了。如果有问题,你可以等待一段时间,比如:
wfauudbj2#
这可以看作是一个有条件构建的承诺链,下面的函数
tryToUpdate
捕获错误、暂停和递归多达5次。OP的获取可以通过不创建新的Promise来改进...