看到一段代码这样写的,请帮忙解答一下要这样写?

return new Promise((resolve, reject) => {
        getInfo(state.token).then(response => {
          const data = response.data;
          commit('SET_ROLES', data.role);
          commit('SET_NAME', data.name);
          commit('SET_AVATAR', data.avatar);
          commit('SET_INTRODUCTION', data.introduction);
          resolve(response);
        }).catch(error => {
          reject(error);
        });
      });

其中getinfo()这个函数是请求数据的方法(axios), 这个getinfo()已经是支持Promise了,为什么还要在外面套一个Promise。这样写可以吗?

 getInfo(state.token).then(response => {
          const data = response.data;
          commit('SET_ROLES', data.role);
          commit('SET_NAME', data.name);
          commit('SET_AVATAR', data.avatar);
          commit('SET_INTRODUCTION', data.introduction);
        }).catch(error => {
        });
阅读 2.5k
3 个回答

你这样写没问题的,之所以在套一层,是因为他想再执行一个回调

function doPromise(){
    return new Promise((resolve, reject) =>{
        getInfo().then(...)....
    })
}
doPromise().then(...)

promise里层的状态会影响到外层的状态,如果getinfo()是resolve()那么外层promise也是resolve,反之亦然

除了将非标准Promise转为标准Promise, 我想不到任何其他解释

另: 你的等效实现在then的回调里忘了return response

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题