Как ожидать выполнения функции, используя обещание ждать ее обратного вызова в Javascript / Node JS - PullRequest
0 голосов
/ 30 января 2020

У меня есть две функции, скажем async foo() и bar()

Допустим, exe время foo() => 5 секунд

exe время bar() => 10 секунд

Код выглядит примерно так:

await foo();

async foo(){
//body 
bar()
}

ПРОБЛЕМА:

Здесь foo() требуется 5 секунд для выполнения (часть тела), поэтому он возвращает успешное обещание без ожидания выполнения bar() до завершения

ВОПРОС:

Как убедиться, что foo() возвращает обещание только тогда, когда bar() завершает его выполнение, возможно, используя обещание ждать обратного вызова bar(), но я не уверен, как именно go об этом

Примечание: не могу объявить bar как asyn c, так как импортировано из какого-то другого модуля

Ответы [ 2 ]

2 голосов
/ 30 января 2020

Вы можете обещать методы служб aws-sdk, просто добавив метод с помощью .promise;

await foo();

foo(){
  return ses.sendTemplatedEmail(params).promise();
}

ИЛИ

    await foo();

    async foo(){
      try {
        let res = await ses.sendTemplatedEmail(params).promise();
        console.log(res)
     }catch(err) {
        console.log(err)
       }
    }
0 голосов
/ 30 января 2020

Вы можете попробовать ниже код

await foo();

    foo() {
        return new Promise(async resolve => {
           const result =await bar()
              if (result) {
                resolve(true)   
              }

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