Цепочка .then вне зависимости от предыдущих результатов - PullRequest
0 голосов
/ 17 марта 2019

Я использую версию узла 6, и у меня есть несколько цепочек .then.Но только второй .then зависит от предыдущих результатов, а остальные. Than не зависят от предыдущих результатов.Как связать. Тогда, когда они не зависят от предыдущих результатов.

Вот мой код:

return admin.auth().getUser(phone)
        .then(userRecord => {

            return rp(options)
        })
        .then((orderResponse) => {
            return admin.database().ref('trans/'+ phone)
                .push({  amount: orderResponse.amount })
            })
        .then(() => {
            return admin.database().ref('ord/'+ phone)
                .push({ payment_id })
        })
        .then(() => { 
            return saveThisAddress === true ? 
                admin.database().ref('add/'+phone)
                    .push({address: finalAddress}) : null
        })
        .then(() => {
            return admin.database().ref('dStatus/'+phone+'/'+orderNumber)
                .set({ plan: planName === "" ? "Single Day Plan" : planName, orderStatus: orderStatus,
                }, () => {
                    res.status(200).send({ success:true })
                })
        }) 
        .then(() => {
            return admin.database().ref(`couponCodes/${couponCodeName}`)
                    .update({couponUsage: couponUsage + 1 })
        })
        .then(() => {
            return admin.database().ref(`couponUsage/${phone}`)
                    .update({ [couponCodeName]: usersCouponUsage + 1 })
        })  
    .catch((err) => {
       res.status(422).send({error: err });
    }); 

Мало кто сказал, что я неправильно выполняю обещания.Что я делаю неправильно ?Как обрабатывать несколько .then, когда каждый .then не зависит от предыдущих результатов?Поскольку я использую узел 6, асинхронное / ожидание не может быть использовано здесь.

Пожалуйста, руководство

1 Ответ

0 голосов
/ 21 марта 2019

Возможно, хорошей идеей является использование функции Promise.all, которая в соответствии с Зеленый узел доступна в Узле 6.

В этом случае зависит только второе обещание.на первом, поэтому один из способов сделать это будет:

var promise1 = ...
  .then(function(param) { return /* your second promise */})
var promise3 = ...;
var promise4 = ...;
var promise5 = ...;
var promise6 = ...;

Promise.all(promise1, promise3, promise4, promise5, promise6)
  .then(/* once all succeded */)
  .catch(/* if an error occurred */)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...