Node.js Async/Await:理解Async/Await的问题

Node.js Async/Await:理解Async/Await的问题,node.js,express,asynchronous,async-await,node-modules,Node.js,Express,Asynchronous,Async Await,Node Modules,我正在使用async/await。我想先显示我从可读流中检索到的数据,然后显示相应的消息 这是我的密码: var stream = async function (){ var myStream = fs.createReadStream(__dirname+"/someText.txt",'utf8'); await myStream.on('data', (chunk)=>{ console.log(chunk

我正在使用async/await。我想先显示我从可读流中检索到的数据,然后显示相应的消息

这是我的密码:

var stream = async function (){
           var myStream =  fs.createReadStream(__dirname+"/someText.txt",'utf8');

            await myStream.on('data', (chunk)=>{
             console.log(chunk)// I want to display this first
        }) 
 }

stream()

console.log('listening') // and then move on to display this one 

流侦听器不是承诺,您不应该在myStream.on('data')上等待。你可以这样做,但它会立即解决

将流侦听器包装在一个
Promise
中并等待它,为此您可以使用


我明白了。我对结尾行的语法感到困惑。async以括号开始,我不理解这个。在它的花括号的末尾插入括号//this one here->(async()=>{await stream();//await只能在
async
function console.log('listing');})中使用()//
const { once } = require('events');

var stream = async function (){
   var myStream =  fs.createReadStream(__dirname+"/someText.txt",'utf8');

    myStream.on('data', (chunk) => {
       console.log(chunk)// I want to display this first
    });

    // Wait until everything has been read
    // Or an error has been triggered
    await once(myStream, 'close'); 
}

(async() => {
  await stream(); // await can only be used in `async` function
  console.log('listening');
})().catch(console.error);