我被困在了我的抽搐电视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