【发布时间】:2021-12-19 13:11:32
【问题描述】:
所以我正在学习 javascript 中的 async-await 以及当我尝试执行此回调地狱时(我知道这不是最佳实践,但我必须学习它) 我第二次调用它一直调用自己的函数(无限循环) 您可以运行代码以了解更多信息,因为在我看来没有任何问题我花了过去 2 天试图理解问题,但我最终到了这里
代码:
const xhr = new XMLHttpRequest();
const url = new URL("https://www.breakingbadapi.com/api/quotes");
const moveiData = (link, callBack) => {
xhr.addEventListener("readystatechange", () => {
if (xhr.readyState === 4 && xhr.status == 200) {
} else if (xhr.readyState === 4) {
callBack("could not fetch data");
}
});
xhr.open("GET", link);
xhr.send();
};
moveiData(url, (response) => {
console.log(response);
moveiData(url, (response) => {
console.log(response);
});
});
【问题讨论】:
-
您是否在 if 语句中调用了
callback()(成功案例)? -
不仅如此,每次调用 moveiData 只会添加另一个监听器。
-
据我所知,您调用了 2 次 moveiData。但是 xhr.addEventListener 正在监听同一个事件两次。你应该在函数之外定义它
标签: javascript api async-await promise asynccallback