访问箭头函数内的yield

mat*_*sen -3 javascript ecmascript-6 babeljs

由于无法创建箭头生成器函数, 因此从不在箭头函数的上下文中使用yield.

var arrowGenerator = *() => { };
Run Code Online (Sandbox Code Playgroud)

那么你应该能够在生成器函数的上下文中使用yield.就像这样

function* generator() {
    funcWithCallback((value) => {
       yield value;
    });
}
Run Code Online (Sandbox Code Playgroud)

但巴贝尔它使用产量箭头功能的情况下,而不是genreators.

我想这样做,所以你不需要返回一个带有值的回调函数,只是为了产生它.

function* gen() {
    yield function (callback) {
        funcWithCallback(callback);
    } 
}
Run Code Online (Sandbox Code Playgroud)

Ami*_*mit 6

yieldyield*关键字只能用于直接生成函数里面.您的代码片段在概念上存在缺陷,其方式类似于:

function f1() {
  if(someCondition) {
    f2((value) => {
       else {
         // do something
       }
    });
  }
}
Run Code Online (Sandbox Code Playgroud)

或者,对此:

function f1() {
  f2((value) => {
    return someValue; // while this is legal, it doesn't cause f1 to return
  });

  codeAfterReturn();
}
Run Code Online (Sandbox Code Playgroud)

显然,这两个例子并不"有用",你的代码片段也是如此.