Обещание не выполняется, как ожидалось - PullRequest
0 голосов
/ 27 января 2020

Действие должно вызываться после того, как действие 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;
    }),

Обещание не выполняется должным образом. Не уверен, что я здесь делаю неправильно, «тогда» после обещания все никогда не выполняется.

Может кто-нибудь указать, что я здесь делаю неправильно?

1 Ответ

0 голосов
/ 27 января 2020

В строке, где вы передаете пользователя, вы помещаете его в объект под именем user.

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

Таким образом, вы должны получить доступ к user.uid, как user.user.uid, просто передайте user объект. Примерно так:

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

Если вы добавите catch к обещанию, то его уволят будет c

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...