Я очень волнуюсь о Node JS на некоторое время. Я, наконец, решил свалиться и написать тестовый проект, чтобы узнать о генераторах в последней версии Harmony Node.
Вот мой очень простой тестовый проект:
https://github.com/kirkouimet/project-node
Чтобы запустить мой тестовый проект, вы можете легко вытащить файлы из Github и запустить его с помощью:
node --harmony App.js
Здесь моя проблема - я не могу получить метод асинхронного fs.readdir Node для запуска встроенных генераторов. Другие проекты, такие как Galaxy и suspend, похоже, могут это сделать.
Вот блок кода, который мне нужно исправить. Я хочу иметь возможность создать экземпляр объекта типа FileSystem и вызвать на нем метод .list():
FileSystem = Class.extend({
construct: function() {
this.currentDirectory = null;
},
list: function*(path) {
var list = yield NodeFileSystem.readdir(path);
return list;
}
});
Нужно ли что-то делать раньше времени, чтобы преобразовать Node fs.readdir в генератор?
Одно важное замечание: я разбираю все функции класса по мере их создания. Это позволяет мне обрабатывать функции генератора по-разному, чем обычные функции:
Я действительно был в тупике с этим проектом. Любить любую помощь!
Вот что я пытаюсь выполнить:
- Тяжелое использование классов с модифицированной версией поддержки JavaScript JavaScript JavaScript с наследованием
- Использование генераторов для поддержки inline-поддержки для анимированных вызовов Node
Изменить
Я попытался реализовать вашу примерную функцию, и у меня возникают проблемы.
list: function*(path) {
var list = null;
var whatDoesCoReturn = co(function*() {
list = yield readdir(path);
console.log(list); // This shows an array of files (good!)
return list; // Just my guess that co should get this back, it doesn't
})();
console.log(whatDoesCoReturn); // This returns undefined (sad times)
// I need to use `list` right here
return list; // This returns as null
}