Можно ли передавать в промис ассинхронную функцию?

Можно ли использовать async при работе с промисами? То есть функцию которая передается в промис сделать ассинхронной? Чтобы внутри нее использовать await. То есть будет ли корректно после этого работать промис?

return new Promise(async (resolve, reject) => {
  let a = await someFunc();
          resolve(a);
})

Ответы (1 шт):

Автор решения: vsemozhebuty

Тут главное, где и когда вы вызовете колбэк resolve. Вы можете не только использовать асинхронную функцию, вы можете передавать resolve по любой цепочке колбэков и даже разрешать resolve с другим промисом — всё будет автоматически обработано:

new Promise(async (resolve, reject) => {
  let a = await Promise.resolve(42);
  setTimeout(() => resolve(Promise.resolve(a)));
}).then(console.log); // 42

→ Ссылка