Кто-нибудь пытался получить Underscore JS или lodash (или любые стандартные функции ES5 в этом случае), работающие с генераторами?
Если у нас есть массив var myArray = [1,2,3,4,6];
Мы хотим, чтобы он прошел через него.
В случае с негенератором вы просто
myArray.forEach(function(k) {
console.log(k);
});
Однако, когда вы не можете уступить внутри функции негенератора, поэтому, если внутри этого цикла нам нужно выполнить некоторую работу async, вам нужно будет сделать следующее.
var foreach = function* (arr, fn) {
var i;
for (i = 0; i < arr.length; i++) {
yield * fn(arr[i], i);
}
};
yield* foreach(myArray, function* (k) {
var a = yield fs.readFile();
});
Какой вид отстой.
Кто-нибудь знает, как получить анонимные функции, работающие с генераторами? Из-за этого мы теряем всю библиотеку lodash.
Примечание. Я использую Traceur для компиляции моего кода в ES6 с включенными генераторами.
Примечание. Я не использую co(). Я использую пользовательскую функцию генератора, которая видна ниже
var run = function(generatorFunction) {
var generatorItr = generatorFunction(resume);
function resume(callbackValue) {
generatorItr.next(callbackValue);
}
generatorItr.next();
};