これはかなりシンプルでなければなりませんが、the beginning exercise from koa workshopの解を理解できません。koa.js workshop solution、exercise number oneの説明が見つかりません
テスト:
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)
呼び出し、戻りthe
function (done) {
fs.stat(filename, done);
}
次に、私はすべて質問があります:なぜd oesの匿名関数は同じ場所にfs.stat()
を返し、どこでdone
コールバックを受け取るのですか?私はこのコールバックをログに記録しました。生成元はstats
のオブジェクトを渡すパラメータとしてnext()
メソッドですが、コールバックの注入に関する情報はco
にありません。これはどのように作動しますか?前もって感謝します。