javascript - axios + Promise 给 then 方法添加参数

标签 javascript ecmascript-6 axios es6-promise

我在 Promise 中进行了 axios post 调用,并且我想在 Promise then 方法中获取 ajax 响应

 return new Promise((resolve, reject) => {
        axios.post('/api/products/modify', product).
        then(r => {
          if(r && r.data && r.data.result) {
            return {productId: r.data.result};
          } else {
            console.error("actions addproduct error occours during modifying the product! Error: " + r.data.error);
            reject(r.data.error);
          }
        }).
        catch((error) => {
          console.error("actions addproduct; error occours during adding the product! Error: " + error);
          reject(error);
        });
      }
    });

当我调用 p.then(); 时,我想获取 {productId: r.data.result} 对象。

我试过这个:

p.then(r => {
          console.debug("response: " + r);
        });

但是不起作用。然而,ajax 调用正在到达服务器,因此 Promise 有效,但我无法将结果添加到 then 方法中。

感谢您的提前回复!

最佳答案

避免 Promise constructor antipattern !您的 return 很好,但您应该简单地抛出您的错误,然后使用 then() 已经为您创建的 promise :

return axios.post('/api/products/modify', product).then(r => {
    if (r && r.data && r.data.result) {
        return {productId: r.data.result};
    } else {
        console.error("actions addproduct error occours during modifying the product! Error: " + r.data.error);
        throw r.data.error;
    }
}, error => {
      console.error("actions addproduct; error occours during adding the product! Error: " + error);
      throw error;
});

或者没有日志:

return axios.post('/api/products/modify', product).then(r => {
    if (r.data.result) {
        return {productId: r.data.result};
    } else {
        throw r.data.error;
    }
});

关于javascript - axios + Promise 给 then 方法添加参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49778232/

相关文章:

javascript - 如何从 DatePicker 在 TextField 上设置数据

javascript - 以键作为箭头函数参数的 ES6 对象

javascript - 将父级设置为子级 - 循环引用

javascript - Vue Nuxt Axios : cross-domain POST w/proxy

javascript - 如何使用axios直接调用cloudinary api?

javascript - 上传到服务器后水平 slider 无法正常工作

javascript - React Redux - 未捕获( promise )TypeError : Cannot read property 'props' of undefined

javascript - 使用ES6在没有map的情况下增加对象属性

reactjs - 如何在 react 中将 react 钩子(Hook)对象从 index.js 传递到 axios 拦截器

javascript - 我的 Facebook 应用程序的 Javascript 在 Google Chrome 中不起作用