2 回答

TA貢獻2080條經驗 獲得超4個贊
好的,所以我改變了一點代碼。
async function getRandomWord() {
try {
const res = await fetch('https://randomuser.me/api');
const data = await res.json();
const randomWord = data.results[0].location.country;
return randomWord.toUpperCase();
// words.push(randomWord.toUpperCase());
} catch (e) {
console.log(
'There has been a problem with your fetch operation: ' + e.message
);
}
}
然后剛剛打電話給
(async () => {
selectedWord = await getRandomWord();
displayWord();
})();
不敢相信我做了這個:D謝謝。

TA貢獻1873條經驗 獲得超9個贊
讀取尚未解決,并且在執行時尚未填充。使用 Promise.all,然后:words[]selectedWords =
const p = Promise.all([
getRandomWord(),
getRandomWord(),
getRandomWord(),
getRandomWord()
]);
const words = [];
p.then(()=>{
const selectedWord = words[Math.floor(Math.random() * words.length)];
console.log(words);
console.log(selectedWord);
});
// Fetch some random words
async function getRandomWord() {
const res = await fetch('https://randomuser.me/api');
const data = await res.json();
const randomWord = data.results[0].location.country;
words.push(randomWord);
}
注意:如果您不希望快速失敗行為,則需要使用 Promise.allSettled,其中任何失敗都會導致它立即返回。另請注意,我正在使用Promise.all,以便它將同時運行提取,而不是按順序等待它們。
異步/等待而不是然后
(async()=>{
let words = [];
for(var i = 0; i < 4; i++)
words.push(getRandomWord());
words = await Promise.all(words);
const selectedWord = words[Math.floor(Math.random() * words.length)];
console.log(words);
console.log(selectedWord);
})()
// Fetch some random words
async function getRandomWord() {
const res = await fetch('https://randomuser.me/api');
const data = await res.json();
const randomWord = data.results[0].location.country;
return randomWord;
}
添加回答
舉報