//读取文件 //1.回调函数 fs.readFile('/etc/passwd', function (err, data) { if (err) throw err; console.log(data); });
//2.Promise fs.readFile(fileA, function (err, data) { fs.readFile(fileB, function (err, data) { // ... }); }); //读入A后,读取B,则会出现多重嵌套
//3.协程 function *asnycJob() { // ...其他代码 var f = yield readFile(fileA); // ...其他代码 }
//4.generator var fs = require('fs');
var readFile = function (fileName){ returnnewPromise(function (resolve, reject){ fs.readFile(fileName, function(error, data){ if (error) reject(error); resolve(data); }); }); };
var gen = function* (){ var f1 = yield readFile('/etc/fstab'); var f2 = yield readFile('/etc/shells'); console.log(f1.toString()); console.log(f2.toString()); };
//5.Async var asyncReadFile = asyncfunction (){ var f1 = await readFile('/etc/fstab'); //await表示紧跟后面的表达式需要等待结果 var f2 = await readFile('/etc/shells'); //返回Promise对象,如果不是,则转为promise console.log(f1.toString()); console.log(f2.toString()); };