Это должно быть довольно просто, но я не могу понять решение для the beginning exercise from koa workshop.Не можете найти объяснение для решения koa.js 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);
}
Тогда у меня есть вопросы: почему d oes анонимная функция возвращает fs.stat()
в том же месте и где требуется done
callback? Я зарегистрировал этот обратный вызов, это генераторы next()
с объектом stats
как передающий параметр, но я не могу найти информацию о вводе обратных вызовов в co
. Как это работает? Заранее спасибо.