【发布时间】:2017-09-10 07:06:02
【问题描述】:
我使用 axios 发出 HTTP 请求,并在其中发出另一个 HTTP 请求,以添加有关我获得的项目的一些详细信息。将它推送到“订单”数组后,我需要设置状态,但它之前已经完成了,所以我无法以正确的方式打印它。 它适用于 SetTimeout,但我想以更专业的方式来做。 我怎样才能做到同步?
fetchOrders(){
let orders = [];
let status;
this.setState({loading:true});
http.get('/api/amazon/orders')
.then(response => {
if (response.status === 200) status = 200;
orders = response.data;
orders.map(order => {
order.SellerSKU = "";
http.get(`/api/amazon/orders/items/${order.AmazonOrderId}`)
.then(res => {
order.SellerSKU = res.data[0].SellerSKU;
})
.catch(error => {
console.log(error);
})
});
setTimeout( () => {
this.setState({orders, error: status ? false : true, loading:false})
}, 1000);
})
.catch(error => {
this.setState({loading:false, error:true});
console.error(error);
});
}
【问题讨论】:
标签: javascript reactjs asynchronous axios setstate