実現したいこと
クイズのデータをAPIで取得し、勉強としてクイズアプリを作成しています。
ソースコードにある変数「quizData」を他の関数でも使いたいので、グローバル変数のように扱いたいです。
試したこと1
クイズのデータが格納されている「quizData」をreturnしました。
JavaScript
1const callApi = async () => { 2 const res = await fetch('https://opentdb.com/api.php?amount=10&type=multiple'); 3 const quizData = await res.json(); 4 return quizData.results 5} 6callApi(); 7console.log(callApi()); 8```上記を実行すると、コンソールに以下が実行されました。 9![イメージ説明](8de07238fc77108f69bd07d7b881f1f0.png) 10「PromiseValue」から値を持ってくることができず断念しました。 11 12## 試したこと2 13クイズのデータを関数外の配列である、変数「arr」に追加すれば使えるのではと考えました。 14```JavaScript 15let arr = []; 16 17const callApi = async () => { 18 const res = await fetch('https://opentdb.com/api.php?amount=10&type=multiple'); 19 const quizData = await res.json(); 20 for (i = 0; i < quizData.results.length; i++) { 21 arr.push(quizData.results[i]); 22 } 23} 24callApi(); 25console.log(arr); 26```上記を実行すると、コンソールに以下が実行されました。 27![イメージ説明](69bc2261df2567e7a55b87d3639995a5.png) 28なぜか配列に追加されず、クイズデータを扱えなかった。 29 30## 何が原因だと考えるか 31私の非同期処理やAPIの扱い方の理解が足りていないのが原因だと考えます。 32 33どのようにすれば、クイズデータを他の関数などにも使い回すことができるでしょうか。 34 35よろしくお願いします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/25 13:33