Вычисление суммы нескольких обратных вызовов asyn c - PullRequest
0 голосов
/ 24 февраля 2020

Я все еще изучаю Javascript правильно и читаю здесь несколько тем об асинхронности ( 1 2 ). К сожалению, мне все еще трудно найти решение моей проблемы. Я вызываю API в асинхронном режиме c и хотел бы создать сумму из ответа, получаемого мной от нескольких асин c вызовов.

Допустим, я хочу, чтобы мой код выполнил действие если моя «сумма» имеет значение 40. Asyn c вызов «A» возвращает 6, asyn c вызов «B» возвращает 8 и так далее, пока мы, наконец, не достигнем значения 40. Как я могу создать такой сумма, так как все мои звонки асин c? Требуется ли запись каждого асинхронного c результата в базу данных и получение значения в следующем асинхронном c вызове? Есть ли лучшее решение для этого?

Спасибо за вашу помощь.

РЕДАКТИРОВАТЬ: Чтобы упростить понимание, я добавлю некоторый исходный код:

Webhook. js

router.post('/', (req, res, next) => {
  if (middleware.active)
    middleware.handle(req.body) // <--- this gives me one result
  res.sendStatus(200)
});

По сути, я получу несколько звонков через Интернет. "middleware.handle" отправит вызов API стороннему приложению. Я хочу взять результат этого вызова API и добавить его к результату другого вызова API из другого запроса webhook.

Как вы можете видеть, я не знаю, когда будет запущен мой webhook, ни как много раз он будет срабатывать до достижения желаемой суммы в 40.

Ответы [ 2 ]

0 голосов
/ 24 февраля 2020

Вы можете ожидать обоих в do / while l oop, затем делать остальные логи c

async function myFunc() {
   let valA = 0;
   let valB = 0;
   do {
      valA += await fetch('https://api.url.com/a');
      valB += await fetch('https://api.url.com/b');
   } while((valA + valB) < 40 );

Вы также можете делать каждое в do / while l oop если вы хотите запросить значение только у одного, проверьте состояние.

0 голосов
/ 24 февраля 2020

Вы можете использовать Promise.all([apiCallOne, apiCallTwo]).then(values => sum(values)) sum как функцию, которая суммирует массив чисел

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