用co 哪里写的有问题
发布于 9 年前 作者 wtcsy 4065 次预览 最后一次回复是 9 年前 来自 问答
下面是代码 就是想按顺序的方式读取下文件内容… 哪里错了 ps 各位用什么来处理异步的了?
var co = require(‘co’); var fs = require(“fs”);
function readFile(filename) { return function(callback) { fs.readFile(filename, ‘utf8’, function(err,data){ callback({ err : err, data : data }) }); }; }
co(function* () { var file1 = yield readFile(’./txt/1.txt’); var file2 = yield readFile(’./txt/2.txt’); console.log(file1); console.log(file2); return ‘done’; })
5 回复
你的引号用的中文
yield 后面跟的方法,要返回的是一个promise, 。用bluebird模块。
readFile 回调函数不是你这么写的,要遵守 Node.js的Error-first回调模式!
所以
这样可以简写成:
@wenjie88
co 模块后面可以是一个function。
在co源码中可以把 function,Array,Object等转化为Promise对象~
我还想把几个参数合并成一个对象了
想当然了 多谢各位!~