nodejs回调变await写法

我有这样一段代码


module.exports.AAA=function(){

    let request= test(function(){
        //一段异步代码
    });
    let data;
    
    request.on('data',function(data){})    
    request.on('end',function(){})
}

上面的代码我怎么在调用AAA()的时候直接获取到data的值呢?如果是使用asyncawait怎么写呢?

阅读 4.8k
3 个回答
npm install bluebird --save
const Promise = require('bluebird');
module.exports.AAA=function(){
    return new Promise((resolve,reject)=>{
        let request= test(function(){
        //一段异步代码
        });
        request.on('data',resolve);    
        request.on('error',reject);
        request.on('end',function(){});
    });
}
(async function(){
  try{
     const response = await AAA();
     console.log(response);
  }catch(e){
    console.error(e);
  }
})();
export default () => {
  const request = () => {
    // ...
  }
  const concat = (data,newData) => {
    // ...
  }

  let data = ''
  return new Promise((resolve, reject) => {
    request.on('data', newData => {
      data = concat(data, newData)
    })
    request.on('done', () => {
      resolve(data)
    })
    request.on('error', err => {
      reject(err)
    })
  })
}

foobar.js

'use strict';

function getDelayedData() {
    return new Promise(async resolve => {
        setTimeout(() => { resolve(+new Date); }, 1000);
    });
}

(async () => {
    let result = await getDelayedData();
    console.log('Got', result);  // missing error checking
})();

这里有一段代码参考一下。

node --harmony-async-await foobar.js

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题