【发布时间】:2016-04-12 11:01:38
【问题描述】:
它必须相当简单,但我无法理解the beginning exercise from koa workshop的解决方案。
测试:
var co = require('co');
var assert = require('assert');
var fs = require('./index.js');
describe('.stats()', function () {
it('should stat this file', co(function* () {
var stats = yield fs.stat(__filename);
assert.ok(stats.size);
}));
});
解决方案和任务:
var fs = require('fs');
/**
* Create a yieldable version of `fs.stat()`:
*
* app.use(function* () {
* var stats = yield exports.stat(__filename);
* })
*
* Hint: you can return a yieldable.
*/
exports.stat = function (filename) {
return function (done) {
fs.stat(filename, done);
}
};
我认为这个测试的方式是:co 库为我们运行生成器函数,fs.stat(__filename) 调用,返回
function (done) {
fs.stat(filename, done);
}
然后,我只有一个问题:为什么匿名函数会在同一个地方返回fs.stat(),它在哪里需要done 回调?我已经记录了这个回调,它是带有stats 对象作为传递参数的生成器next() 方法,但是我在co 中找不到有关回调注入的任何信息。这是如何运作的?提前谢谢你。
【问题讨论】:
标签: javascript generator koa co