2017-08-05 33 views
0

像上面那樣,我想導出包含來自api的一些數據的數組,但這裏是一個東西,在運行獲取之前導出,因此數組爲空以便導出。我嘗試超時出口,但不工作。那我該怎麼做呢? 謝謝! 這是我的代碼:如何在JS中導出變量之前運行提取?

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 

最後,我用我的方式得到它,所以我的人誰是堅持的一樣我解釋一下。 這裏是導出函數返回promise,並在函數內部使用promise回調,並從導入promise中推入我們需要做的任何數組。

+1

'const'應該是'const'。你可以嘗試包裝作爲一個函數,如'getArray'和導出函數? – styfle

+0

是的,我已經嘗試過,但他們沒有,當我們返回並通過類導出時,這些代碼無法計算出時導出和另一個文件導入使用。 –

+0

請在使用提取之前閱讀此內容。 https://blog.hospodarets.com/fetch_in_action – Robus

回答

2

嘗試在response.json()之前添加return關鍵字。我認爲發生的事情是你的第一個.then沒有返回承諾*,這意味着第二個.then接收未定義爲json參數。

*請參閱下面的註釋;它返回一個承諾,但它解析爲undefined

+0

'然後'總是返回一個承諾。這個承諾可以用undefined來解決?是。 https://promisesaplus.com/#point-40 – Jaime

+0

感謝您的回答,那些工作時,我設置超時和console.log這個數組。否則,我嘗試導出承諾,但錯誤不起作用 –

+0

好通話,傑米,是的,這是一個承諾,解決未定義! – Sean

相關問題