【问题标题】:Promise not executing as expected承诺没有按预期执行
【发布时间】:2020-01-27 16:31:44
【问题描述】:

在 fetchUser 操作返回一个承诺后应该调用一个操作。这是获取用户的代码:

fetchUser({ commit }, user) {
let promise = new Promise((resolve, reject) => {
        if (user.uid) { 
          commit("SET_LOGGED_IN", user !== null)
          //  do something ...
          console.log('Resolving promise')
          resolve(user);
          } else {
            commit("SET_USER", null)
            console.log('Rejecting promise')
            reject();
          }

        }
      });
      return promise;
    },

行动是

someAction: firestoreAction(({ bindFirestoreRef, getters }) => {
      let user = getters.user;
      let promise = dispatch('fetchUser', {user});
      console.log(`promise is ${promise}`);

//-----NEVER EXECUTES THIS STEP, SIMPLY GOES BLANK HERE----

      promise.then(function(user) {
      return bindFirestoreRef(
        //dosomething...
      });
      return promise;
    }),

Promise 未按预期执行。不知道我在这里做错了什么,承诺之后的“then”永远不会执行。

有人能指出我在这里做错了什么吗?

【问题讨论】:

  • 更改 let promise= 作为返回猜测它有效

标签: javascript vue.js promise


【解决方案1】:

在传递用户的行中,您将其放入名称为user 的对象中。

  let promise = dispatch('fetchUser', {user});

所以你必须像user.user.uid一样访问user.uid,只需传递user对象。像这样:

  let promise = dispatch('fetchUser', user);

如果您在承诺中添加catch,则该承诺将被解雇

【讨论】:

    猜你喜欢
    • 2018-09-19
    • 2022-01-17
    • 2019-12-03
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 2017-11-16
    • 2018-10-08
    相关资源
    最近更新 更多