Возможно, вы не ожидаете внутри функции asyn c, которую вы вызываете AddToQueue()
Если вы не вызываете AddtoQueue()
внутри функции asyn c и не ожидаете ее там, AddToQueue запустится после того, как этот код выполняется.
Итак, позвольте мне привести вам пример.
У вас есть 2 файла в тестовой директории.
await. js main. js
await. js is:
module.exports = async ()=> {
await new Promise((res, rej)=>{
setTimeout(()=>{
res(console.log('Running'));
}, 2000)
})
}
И основной. js
console.log('Hello')
require('./await')();
console.log('World')
При запуске main. js, node main.js
, Hello world
будут запускаться, затем после разрешения обещания он будет вытеснен из очереди в ваш стек запуска и запущен последним.
Hello
World
// After 2 secs
Running
Но вместо этого, если в основном. js
(async ()=>{
console.log('Hello')
await require('./await')();
console.log('World')
})()
Вы дадите знать javascript engine это asyn c функция, и дождитесь, пока этот модуль запустится, и вы получите ожидаемые результаты.
Hello
// After 2 seconds
Running
World
В основном вы говорите javascript двигатель I do not want you to run it your way, but run it my way
.