Я борюсь с обработчиком событий в javascript, я пытаюсь заставить вещи реагировать правильно с помощью async / await.
Проблема в приведенном ниже коде связана с событием file.on
- я изо всех сил пытаюсь правильно его обещать. В настоящее время метод checkSomething
возвращается до завершения обработчика file.on
, поэтому returnValue
всегда false
.
Я мог бы воспользоваться некоторыми советами и рекомендациями.
Какой хороший способ убедиться, что returnValue
проверен / установлен в обработчике до возврата значения? Я попытался поместить ключевое слово await
перед обработчиком событий и в его функцию обратного вызова, но это не сработало, и я в основном потрудился на этом и мог бы воспользоваться некоторыми советами. Спасибо.
const axios = require('axios')
const fs = require('fs')
/*....*/
let isItChecked = await checkSomething()
async function checkSomething() {
let returnValue = false
const response = await axios.get('https://someUrl.com', {
responseType: 'stream'
})
const file = fs.createWriteStream('./localFile.txt')
response.data.pipe(file)
file.on('finish' () => {
performATask().then((result) => {
if (result == 'good') {
returnValue = true //need to make sure this is evaluated before returning
}
})
})
return returnValue
}