javascript - 带有事件循环的 AJAX 请求
问题描述
我正在寻找创建一个运行带有事件循环的 AJAX 请求的函数。它旨在将这 9 个输入放在顶部,并通过事件循环运行 AJAX 从数据库中请求它们。现在我只是让它做console.log,但最终会让它做一些其他很酷的事情。但是它不起作用,我收到一个错误“未定义”,所以我很好奇我错过了什么?
var cards = [
"Black Lotus",
"Mox Pearl",
"Mox Sapphire",
"Mox Jet",
"Mox Ruby",
"Mox Emerald",
"Time Walk",
"Timetwister",
"Ancestral Recall",
];
for (var i = 0; i < cards.length; i++) {
function renderBinder() {
var cardName = cards[i];
var queryURL = "https://api.scryfall.com/cards/named?fuzzy=" + cardName;
$.ajax({
url: queryURL,
method: "GET",
}).then(function (response) {
console.log(response.name);
});
}
}
解决方案
如果您想每次使用不同的卡按顺序发出 AJAX 请求,您可以这样做。该函数getCardDetails
将一组卡片作为输入。它从列表中删除一张卡片并进行 AJAX 调用,在该调用成功时,我们再次调用相同的函数,这次输入数组将没有已经调用的卡片。
var cards = [
"Black Lotus",
"Mox Pearl",
"Mox Sapphire",
"Mox Jet",
"Mox Ruby",
"Mox Emerald",
"Time Walk",
"Timetwister",
"Ancestral Recall",
];
function getCardDetails (cards) {
if (cards.length) {
$.ajax({
method: 'GET',
url: "https://api.scryfall.com/cards/named?fuzzy=" + cards.pop()
})
.then((response) => {
console.log(response);
getCardDetails(cards);
});
}
}
getCardDetails(cards); // Logs the response of each request
推荐阅读
- xdebug - Xdebug 只能在它已进入的页面上中断
- node.js - 发票已发送给用户,但我无法使用 node.js 收到任何条纹发票邮件
- typo3 - TYPO3 网站迁移问题 - TYPO3 后端工作但前端不工作
- python - bta-lib 错误:尝试使用 rsi 指标但给出 ValueError: cannot set using a slice indexer with a different length than the value
- django - Django获取发送请求的子域
- c# - 如何在统一变换中冻结 Y 旋转。 LookAt()?
- python - Python - 从float继承并调用str和repr时出现递归错误
- reactjs - 错误:我的子组件中的 useState 值没有立即更改,您需要按两次提交按钮
- next.js - Cypress:模拟服务器端功能
- ruby-on-rails - 试图在 ruby/rails 中使用 Prawn PDF 创建一个两列无序的项目符号列表?