我对Axios和Promise还是很陌生。我已接近了解这一点,但我知道自己做错了一些事情。我有一个应返回承诺的javascript方法。在该方法内部,我有一个Axios帖子,其中链接了两个.then
方法。如果我的初始帖子失败,我将在控制台中收到这个丑陋的错误:Unhandled promise rejection ReferenceError: "reject is not defined"
。我觉得我不应该像我一样嵌套.catch
方法。我认为它应该只是post.then.then.catch
。
另外,有人可以看到为什么我没有在第二个response
的{{1}}中将itemInformation发送回去吗?
这是相关的Javascript代码(首先调用.then
方法):
addToCartVue
答案 0 :(得分:2)
我认为该问题缺少“返回”关键字。
尝试在两个地方添加收益。
return axios.post(POST_ENDPOINT...
还有updateCartInfo内,
return axios.get(GET_ENDPOINT,...
此外,由于axios已经返回了promise,所以我认为您不需要将代码包装在Promise对象中。这样可以避免拒绝引用错误。
let vm = this;
vm.buildDataString(itemData);
return axios.post(POST_ENDPOINT, {
data: vm.dataString
},
{
/*headers: {
"Content-Type": "application/x-www-form-urlencoded"
}*/
}).then(response => {
return vm.updateCartInfo(vm.dataString, itemData.addToCartParameters.itemId, vm.selectedStoreId, vm.quantity);
}).then(response => {
if (itemData.addToCartParameters.showLB) {
vm.emitGlobalEvent('addToCart::open', itemData);
return response
}
})
并在致电
时发现错误addVue().then(data => console.log(data).catch(err => console.log(err))