axios-如何在一个promise中链接axios呼叫

时间:2019-01-24 19:44:28

标签: javascript axios es6-promise

我对Axios和Promise还是很陌生。我已接近了解这一点,但我知道自己做错了一些事情。我有一个应返回承诺的javascript方法。在该方法内部,我有一个Axios帖子,其中链接了两个.then方法。如果我的初始帖子失败,我将在控制台中收到这个丑陋的错误:Unhandled promise rejection ReferenceError: "reject is not defined"。我觉得我不应该像我一样嵌套.catch方法。我认为它应该只是post.then.then.catch

另外,有人可以看到为什么我没有在第二个response的{​​{1}}中将itemInformation发送回去吗?

这是相关的Javascript代码(首先调用.then方法):

addToCartVue

1 个答案:

答案 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))