redux-sagas не отправляет действие, когда функция облака firebase завершена - PullRequest
0 голосов
/ 11 июля 2020

эта функция вызывает облачную функцию firebase

   function createUser (data3){
      var addUser = firebase.functions().httpsCallable('crearPaquete');
      addUser(data3).then(function(result) {
     // Read result of the Cloud Function.


      return result //return uid inserted

    }).catch(function(error) {
  // Getting the Error details.
  var code = error.code;
  var message = error.message;
  var details = error.details;
  // ...
});

}

затем я вызываю функцию createUser внутри функции redux-saga

export function* createPackageStart({payload}){

try {
 
 
 yield  user= **createUser(payload)**
  if(user.data){
     yield put(createPackageSuccess()). **///this never is dispatch**


 }

 } catch(error){
    yield  put(createPackageFailure(error))


   }
}

Мне нужен результат облачной функции для отправки успешного действия, но " переменная user "никогда не обновляется с результатом облачной функции

Как я могу достичь этой цели?

1 Ответ

0 голосов
/ 11 июля 2020

Похоже, ваша функция addUser выполняет асинхронную операцию. С вашим текущим кодом Cloud Functions завершает контейнер для вашего кода после выполнения последнего }, то есть до завершения асинхронной функции. Чтобы заставить контейнер ждать, вам нужно вернуть обещание.

function createUser(data3) {
    var addUser = firebase.functions().httpsCallable('crearPaquete');
    return addUser(data3).then(function(result) {
        // Read result of the Cloud Function.


        return result //return uid inserted

    }).catch(function(error) {
        // Getting the Error details.
        var code = error.code;
        var message = error.message;
        var details = error.details;
        // ...
    });

}

Подробнее об этом см. В документации Firebase по отправке результата

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