как вызвать асинхронную функцию в .on event nodejs - PullRequest
0 голосов
/ 13 ноября 2018

Я читаю файл CSV с помощью модуля csv-parser npm createReadStream.

export default async function main() {
  const readstream = fs.createReadStream('src/working_file.csv');
stream.on('data', data => {
const val = await fun(param1, param2, param3);
   });
  fun(param1, param2, param3){
    return true;
  }
}

Мне нужно вызывать функцию fun с await, но она выдает ошибку. await действительна только васинхронная функция .Может кто-нибудь помочь мне, как это исправить?

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Функция, которую вы ожидаете, должна вернуть обещание .

export default async function main() {
  const readstream = fs.createReadStream('src/working_file.csv');
stream.on('data', async data => {
   try{
      const val = await fun(param1, param2, param3);
    } catch(err) {
    //handle error
    }

   });
  fun(param1, param2, param3){
    return new Promise((resolve, reject)=>{
         resolve(some_value)
    })
  }
}
0 голосов
/ 13 ноября 2018

Просто укажите, что функцией обратного вызова является async.

stream.on('data', async data => {
  // Do async stuff
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...