Javascript: Как мне дождаться, пока асинхронный c ответ не потребует данных, прежде чем продолжить - PullRequest
0 голосов
/ 07 августа 2020

Как мне дождаться, пока асинхронный c ответ не будет содержать требуемых данных, прежде чем продолжить?

У меня есть несколько асинхронных c функций, которые применяют скидку и получают заказ, который ДОЛЖЕН содержать заказ с применяется скидка. Проблема в том, что иногда применяется скидка и при вызове заказа скидка не содержится в ответе. (Я предполагаю, что скидка отразится на заказе через несколько секунд). Как лучше всего убедиться, что требуемые данные присутствуют, прежде чем переходить к коду? Я пробовал ниже, но не повезло. Заранее спасибо.

             //Apply Discount
             await this.attemptDiscount(
                payload
              );

              const order = await this.ordersService.getOrder(
                orderId
              );

              //Required condition
              if (
                order.hasOwnProperty("discounts") &&
                order.discounts[0].name ===
                  "Exclusive Discount"
              ) {
                // Proceed with code
              }

1 Ответ

0 голосов
/ 07 августа 2020

Вы должны вызвать await внутри asyn c функции

async applyDiscountAndOrderItem(payload,orderId){


 var discount =  await this.attemptDiscount(
                payload
              );

              const order = await this.ordersService.getOrder(
                orderId
              );

              //Required condition
              if (
                order.hasOwnProperty("discounts") &&
                order.discounts[0].name ===
                  "Exclusive Discount"
              ) {
                // Proceed with code
              }
}

Вы можете вызвать эту функцию

applyDiscountAndOrderItem(payload,orderId).then((response)=>{


success call back

},(err)=>{
eror call back
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...