在箭头函数中访问 yield
accessing yield inside arrow function
因为无法创建箭头生成器函数,
yield 从未在箭头函数的上下文中使用。
var arrowGenerator = *() => { };
那么您应该能够在生成器函数的上下文中使用 yield。就像 这个
function* generator() {
funcWithCallback((value) => {
yield value;
});
}
但在 babel 中,它在箭头函数而不是生成器的上下文中使用 yield。
我想这样做,这样你就不需要 return 一个带有值的回调函数,只是为了产生它。
function* gen() {
yield function (callback) {
funcWithCallback(callback);
}
}
yield
和 yield*
关键字只能在生成器函数中直接 使用。您的代码片段在概念上存在缺陷,其方式类似于:
function f1() {
if(someCondition) {
f2((value) => {
else {
// do something
}
});
}
}
或者,对此:
function f1() {
f2((value) => {
return someValue; // while this is legal, it doesn't cause f1 to return
});
codeAfterReturn();
}
显然,这 2 个示例没有 "work",您的代码片段也没有。
因为无法创建箭头生成器函数, yield 从未在箭头函数的上下文中使用。
var arrowGenerator = *() => { };
那么您应该能够在生成器函数的上下文中使用 yield。就像 这个
function* generator() {
funcWithCallback((value) => {
yield value;
});
}
但在 babel 中,它在箭头函数而不是生成器的上下文中使用 yield。
我想这样做,这样你就不需要 return 一个带有值的回调函数,只是为了产生它。
function* gen() {
yield function (callback) {
funcWithCallback(callback);
}
}
yield
和 yield*
关键字只能在生成器函数中直接 使用。您的代码片段在概念上存在缺陷,其方式类似于:
function f1() {
if(someCondition) {
f2((value) => {
else {
// do something
}
});
}
}
或者,对此:
function f1() {
f2((value) => {
return someValue; // while this is legal, it doesn't cause f1 to return
});
codeAfterReturn();
}
显然,这 2 个示例没有 "work",您的代码片段也没有。