无法为数组中的变量赋值

我正在用JavaScript创建一个简单的项目,似乎无法弄清楚为什么这对我不起作用。我创建了一个函数,该函数获取一个API以获取随机的国家/地区名称,然后将该国家/地区名称推入空数组,但我似乎无法弄清楚如何从该数组中为我的变量分配值,可能在这里缺少一些简单的东西。


getRandomWord();

getRandomWord();

getRandomWord();

getRandomWord();


const words = [];


let 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);

}

我需要从单词数组中随机分配一个国家/地区名称到selectedWord,但它一直抛出未定义,尽管我在0到3的位置的单词数组中看到4个不同的国家/地区名称。有人可以向我解释这一点,或者也许有更好的方法。谢谢!


当年话下
浏览 83回答 2
2回答

犯罪嫌疑人X

好的,所以我改变了一点代码。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谢谢。

眼眸繁星

读取尚未解决,并且在执行时尚未填充。使用 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 wordsasync function getRandomWord() {&nbsp; const res = await fetch('https://randomuser.me/api');&nbsp; const data = await res.json();&nbsp; const randomWord = data.results[0].location.country;&nbsp; words.push(randomWord);}注意:如果您不希望快速失败行为,则需要使用 Promise.allSettled,其中任何失败都会导致它立即返回。另请注意,我正在使用Promise.all,以便它将同时运行提取,而不是按顺序等待它们。异步/等待而不是然后(async()=>{let words = [];for(var i = 0; i < 4; i++)&nbsp; words.push(getRandomWord());&nbsp;&nbsp;words = await Promise.all(words);const selectedWord = words[Math.floor(Math.random() * words.length)];console.log(words);console.log(selectedWord);})()// Fetch some random wordsasync function getRandomWord() {&nbsp; const res = await fetch('https://randomuser.me/api');&nbsp; const data = await res.json();&nbsp; const randomWord = data.results[0].location.country;&nbsp; return randomWord;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript