【发布时间】:2020-06-29 10:19:59
【问题描述】:
我对 JavaScript 很陌生,我一直在使用这个 api,我基本上只是在测试这些递归调用是如何工作的:如你所见,我试图在点击数据后停止调用。 id == 6。
使用“return”退出递归调用与使用布尔值有什么区别? 我认为他们会产生相同的输出;但是,他们没有。布尔值产生预期的结果,而“返回”产生无限循环。我以为返回将是最后一个电话。我的思维过程中的漏洞在哪里?
另外,请注意,在调用 api 调用时是否应该始终使用 await?当我取消等待时,它产生了一个无限循环,即使使用布尔方法也是如此。这是为什么呢?
感谢您的宝贵时间。
let bool = true;
async function foo(index) {
let var2 = await fetch(`https://jsonplaceholder.typicode.com/todos/${index}`)
.then(blob => blob.json())
.then(data => {
if(data.id == 6) {
return;
}
})
.catch(err => console.log(err));
foo(++index);
}
let bool = true;
async function foo(index) {
let var2 = await fetch(`https://jsonplaceholder.typicode.com/todos/${index}`)
.then(blob => blob.json())
.then(data => {
if(data.id == 6) {
bool = false;
}
console.log(data);
})
.catch(err => console.log(err));
if(bool) {
foo(++index);
}
}
【问题讨论】:
-
根据我的经验,return 是一种打破递归的更易读的方式,并且由于您使用的是异步等待,它可以被简化并像同步代码一样阅读
标签: javascript recursion promise fetch