Как я уже упоминал в комментариях, app
- это асинхронная функция, тогда как проверка синхронна.Это означает, что если вы позвоните app(); test();
test
, он всегда будет завершен до разрешения app
.Однако имейте в виду, что Promises
в конечном итоге resolve
или reject
.
Это означает, что для вызова синхронной функции после асинхронного вам необходимо либо вызвать test
в пределах app
,вот так:
async function app() {
//add try-catch to handle rejection of promise
try {
var a = await operation()
console.log('a: ', a) // this returns 200
// now you can call test after app
test();
} catch (err) {
//handle error case to trigger rejection of promise
throw new Error(err)
}
}
или помните, что Promises
являются thenable
:
app()
.then(someReturnedValue => test())
.catch(err => /*handle errors*/)
Вы упоминаете в комментариях, что у вас есть несколько app
-подобных функций, которые будутагрегируется до test
.Вы можете рассмотреть возможность использования Promise.all
, который принимает массив Promises
и возвращает массив данных, соответствующий каждому разрешенному Обещанию, или обнаруживает ошибку, если какое-либо из Обещаний отклоняется.
Promise.all([app, app1, app2])
.then(arrayOfReturnedValues => test())
.catch(err => /*handle errors*/)