【发布时间】:2019-11-06 22:34:08
【问题描述】:
我正在努力使用 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
}
【问题讨论】: