我被困在了我的抽搐電視API應用程序freecodecamp的問題。ReactJS:在.jax()語句之後執行代碼,並在其中調用ajax調用完成
我有一個.map()語句,裏面有一個ajax調用。我將從調用中獲得的數據推送到數組中。
我想整個.MAP()循環結束後,應用程序的狀態設置爲陣,但不知何故數組總是空的,當我訪問它外面.MAP()的
這裏是我試過的代碼。
getData() {
let tempArray= [];
let self = this;
STREAMER.map(function(streamer, i) {
$.ajax({
url: URL + streamer,
success: (data) => {
tempArray.push(data);
},
dataType: "jsonp"
})
});
this.setState({data: tempArray});
}
我感覺問題是ajax調用是異步obv。但我認爲,因爲我調用.map()循環之外的this.setState()方法,它應該是同步的,一切都應該很好,但不是。
Ajax調用不是問題btw。如果我在成功方法內記錄數據,所有事情都是我喜歡的。
任何想法?
不能保證最後一次ajax調用實際上是最後一次完成。 – Pointy
更改的代碼按照推送實施。所有ajaxRequests成功後,setState將被調用。 –
當對應於原始數組中的最後一個元素的調用回調函數,在那個特定的HTTP請求的結論,它會被調用。那時候,一個或多個其他HTTP請求可能還沒有完成。不過,這也意味着「temp」數組中的響應順序不一定與原始數組的順序一致。 – Pointy