var fs =require('fs')
var co = require('co');
function readfile(path){
fs.readFile(path,'utf8',(err,data)=>{
if(err) console.log(err);
return data;
});
}
var gen =function* (){
var f1=yield readfile('/home/kevin/nodeSrc/testSrc/file/a.js');
var f2=yield readfile('/home/kevin/nodeSrc/testSrc/file/b.js');
console.log(f1.toString());
console.log(f2.toString());
};
co(gen).then(function(){
console.log('111');
});
上面的代码应读取的文件都在,但就是没有返回结果,所以有几个疑惑,请教各位
1.为何不报错?
2.lz单拿readfile()
方法实验执行得到的原因是因为readFile()
本身就是异步的,所以f1
的值是undefined
,但那也应该能继续往下执行啊,怎么没有一点打印信息?
3.如何更改才能读取显示打印信息呢?
lz初学,还请各位指点
1、为何不报错。就算readFile有错,也是一个异步错误,你这边也是拿不到的。
2、你没有将生成器使用正确。
3、yield接受一个Promise对象,所以改法如下: