第一种 使用回调函数:
function getData(callback){setTimeout(function(){var name = 'xxxx';callback(name);}, 1000);
}// 外部获取异步方法里面的数据 采用回调函数的方式
getData(function(data){console.log(name);
});
第二种方式 事件触发:
var fs=require('fs');
var events=require('events');var EventEmitter=new events.EventEmitter();function getMime(){fs.readFile('t1.js',function(err,data){console.log(3);EventEmitter.emit('data',data)})}
console.log(1);
getMime();
console.log(2);EventEmitter.on('data',function(mime){console.log(mime.toString());
})
console.log(4);
第三种 使用Promise
var fs = require('fs');
function getData(){return new Promise((resolve, reject)=>{fs.readFile('t1.js', (err, data)=>{if(err){reject(data);console.log('read fail');} else {resolve(data);}});});
}getData().then((data)=>{console.log(data.toString());
});
// Promiese 可以把定义好的异步函数 放入Promise里面作为参数, 然后用then获取异步函数的数据
记录一下:
async 会将其后的函数(函数表达式或 Lambda)的返回值封装成一个 Promise 对象,而 await 会等待这个 Promise 完成,并将其 resolve 的结果返回出来。