我编写了JavaScript应用程序“二十一点”,我需要使用一些API。 首先,我创建了一个牌组,并要求返回我的牌组ID。
fetch('https://deckofcardsapi.com/api/deck/new/shuffle/?deck_count=1')
.then(response => response.json())
.then(data => {
console.log(data.deck_id);
deckId = data.deck_id;
});
然后我要画卡。
for(let i = 0; i < 2; i++)
{
for (let x = 0; x < players.length; x++)
{
fetch('https://deckofcardsapi.com/api/deck/' + deckId + '/draw/?count=1')
.then(response => response.json())
.then(data => {
console.log(data.remaining);
deckLenght = data.remaining;
data.cards.map((card)=>
{
var newCard = getCardData(card);
players[x].Hand.push(newCard);
renderCard(newCard, x);
updatePoints();
updateDeck();
});
});
}
}
但是,当我发送此请求时,我的牌组ID未定义。 该如何解决?
答案 0 :(得分:1)
您需要将for
循环放入第一个HTTP请求的.then()
处理程序中。这样,它将在您的请求完成后执行,而不是与之并行执行:
fetch('https://deckofcardsapi.com/api/deck/new/shuffle/?deck_count=1')
.then(response => response.json())
.then(data => {
console.log(data.deck_id);
const deckId = data.deck_id;
for(let i = 0; i < 2; i++) {
for (let x = 0; x < players.length; x++) {
fetch('https://deckofcardsapi.com/api/deck/' + deckId + '/draw/?count=1')
.then(response => response.json())
.then(data => {
console.log(data.remaining);
const deckLength = data.remaining;
data.cards.map((card) => {
var newCard = getCardData(card);
players[x].Hand.push(newCard);
renderCard(newCard, x);
updatePoints();
updateDeck();
});
});
}
}
});