2017-08-05 6 views
0

上記のように、私はAPIからいくつかのデータが含まれている配列をエクスポートしたいが、ここでは物事をエクスポートする前にエクスポートするので、エクスポートのために配列が空である。私はエクスポートのためのタイムアウトを試みましたが、動作しませんでした。だから私はどうすればいいの? ありがとうございました! これは私のコードです:JSで変数をエクスポートする前にfetchを実行する方法は?

const arr = []; 
    fetch(base, { 
    method: 'GET', 
    headers: { 
     'Accept': 'application/json, text/plain, */*', 
     'Content-Type': 'application/json', 
     } 
    }) 
    .then(response => { response.json()}).then(json => { 
    arr.push(json); 
}) 


export default arr // show empty 

最後に、私は私のやり方でそれを得たので、私は私と同じこだわった誰かのために説明します。 ここで、export関数はpromiseを返し、関数内でその約束のコールバックを使用し、import promiseから行う必要のある配列をすべて押します。

+1

'Const'は' const'でなければなりません。あなたは 'getArray'のような関数としてラップし、関数をエクスポートすることができますか? – styfle

+0

うん、私は試してみましたが、私たちがクラスに戻ってエクスポートするときに、それらのコードはエクスポートされたときには認識されず、別のファイルがインポートされて使用されませんでした。 –

+0

フェッチを使用する前にこれをお読みください。 https://blog.hospodarets.com/fetch_in_action – Robus

答えて

2

response.json()の前にreturnキーワードを追加してみてください。私はあなたの最初のことが約束を返すのではないということを考えています*、それは2番目のことを意味します。そして、json引数として未定義を受け取ります。

*以下のコメントを参照してください。 は約束を返すとですが、未定義に解決します

+0

'then'常に約束を返します。その約束は「未定義」で解決できますか?はい。 https://promisesaplus.com/#point-40 – Jaime

+0

答えてくれてありがとう、タイムアウトとconsole.logのこの配列を設定したときに働いた。さもなければ、私は約束で輸出しようとしますが、うまくいきません。 –

+0

いいですよ、ジェイミー、はい、それは未定義に解決する約束です! – Sean

関連する問題