【问题标题】:Axios call doesn't return promise [duplicate]Axios调用不返回承诺[重复]
【发布时间】:2018-10-21 22:39:37
【问题描述】:

下面的axios调用似乎没问题,但它永远不会返回promise,而是返回undefined

export function getAllSubmissionDetails() {
  return (dispatch) => {
    axios
      .get(`/rbac/members/filledForm/getMain/show/1/data/all`, {
        headers: {
          'Content-Type': 'application/json',
          'Pragma': 'no-cache'
        }
      })
      .then((memResponse) => {
        console.log('%%%%%%%');
        console.log(memResponse);
        if (memResponse.data.status == 200) {
          var mem_list = memResponse.data.msg;
          if (mem_list.length > 0) {
            mem_list = _.sortBy(mem_list, "submissionid").reverse()
            dispatch(memIdeaListSuccess(mem_list, null));
            return memResponse
          } else {
            dispatch(memIdeaListFailure("No Submissions", null));
            return memResponse
          }
        } else {
          dispatch(memIdeaListFailure(memResponse.data.msg, null));
          return memResponse
        }

      })
      .catch((err) => {
        dispatch(serviceError(err));
        return Promise.reject(error)
      });
  };
}

【问题讨论】:

  • 常见错误:你忘了return承诺:return axios.get(...
  • 您也可以在then 回调的底部只使用一次return memResponse,因为所有分支都会导致返回memResponse

标签: javascript reactjs promise axios


【解决方案1】:

您没有返回 axios 返回的值,因此未定义返回值

export function getAllSubmissionDetails(){
                return (dispatch) => {
                        // return value here
                        return axios.get(`/rbac/members/filledForm/getMain/show/1/data/all`, {
                        headers: { 'Content-Type': 'application/json','Pragma': 'no-cache' }
                      })
                        .then((memResponse) => {
                            console.log('%%%%%%%');
                            console.log(memResponse);
                            if(memResponse.data.status == 200){
                                var mem_list = memResponse.data.msg;
                                if(mem_list.length>0) {
                                    mem_list = _.sortBy(mem_list,"submissionid").reverse()
                                    dispatch(memIdeaListSuccess(mem_list,null));
                                    return memResponse
                                } else {
                                    dispatch(memIdeaListFailure("No Submissions",null));
                                    return memResponse 
                                }
                            }else{
                                dispatch(memIdeaListFailure(memResponse.data.msg,null));
                                return memResponse
                            }

                        })
                        .catch((err) => {dispatch(serviceError(err)); return Promise.reject(error)});
                    };
              }

【讨论】:

  • 重复投票比回答更好......
猜你喜欢
  • 2020-03-19
  • 1970-01-01
  • 1970-01-01
  • 2019-10-24
  • 2016-06-15
  • 2015-11-04
  • 2016-10-20
  • 2018-06-03
  • 2015-02-13
相关资源
最近更新 更多