承诺,然后不等待响应保存



我首先发送一个POST请求,向表ORDER添加一个新位置,在该承诺完成后,它向表ORDER_PRODUCT发送一个POST请求,将前一个订单与一些产品关联起来。问题是,它发生得太快了,尽管使用了。then,但在第二个post触发之前,response并没有保存到const

如果我把这两个帖子请求分开,然后手动触发它们,那就没问题了。

const orderHandler = () => {
setError('')
token
? axios
.post(
'http://localhost:8000/order/',
{
notes: notes,
price: quantPrice,
city: city,
street: street,
zipcode: zipcode,
},
{
headers: {
Authorization: 'Token ' + token,
},
},
)
.then((response) => {
console.log(response.data.id, 'wielki chuj')
setOrderid(response.data.id)
})
//.then((response)=>setOrderid(response.data.id ))
.then(() => console.log(orderid))
.then(() => {
cartItems.map((j) =>
axios.post(
'http://localhost:8000/orderproduct/',
{
order: orderid,
product: j.id,
quantity: j.quant,
},
{
headers: {
Authorization: 'Token ' + token,
},
},
),
)
})
.catch((error) => {
console.log(error.response.data.body)
setError(error.response.data.body)
})
: setError('You must be logged in')
}

答案是传递响应。直接将数据发送到第二个POST,而不是通过state。这是subparry建议的。

.then((response) => {
cartItems.map((j) =>
axios.post(
'http://localhost:........

最新更新