Библиотека предоставляет функцию async
. Она возвращает обертку над промисом,
которая позволяет обращаться к свойствам значения,
с которым должен зарезолвиться промис, так, будто это значение у нас уже есть.
Каждое обращение к свойству или вызов метода на результате работы этой функции async
-
будет возвращать промис (также обернутый в async
), который будет резолвиться со значением свойства или
рузультатом вызова метода
async(Promise.resolve('foo')).toUpperCase().then(v => {/*...*/}) // v === 'FOO'
Обращение к методам, которые НЕ(!)специфичны для промисов (все кроме then
, catch
, finally
)
не будут вызываться в контексте промиса. Такие вызовы будут возвращать промис, который будет резолвиться
вызовом данного метода на результате async
// `toString()` вернет промис, который зарезолвится вызовом `({}).toString()`
async(Promise.resolve({})).toString().then(v => {/*...*/}) // v === '[object Object]'