访问箭头函数内的yield

时间:2015-09-01 23:33:15

标签: javascript ecmascript-6 babeljs

因为它无法创建箭头生成器功能, yield 永远不会在箭头函数的上下文中使用。

var arrowGenerator = *() => { };

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

一样
function* generator() {
    funcWithCallback((value) => {
       yield value;
    });
}

但是在babel中它在箭头函数的上下文中使用 yield 而不是genreators。

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

function* gen() {
    yield function (callback) {
        funcWithCallback(callback);
    } 
}

1 个答案:

答案 0 :(得分:6)

yieldyield*关键字只能在生成器功能中使用 直接 。您的代码片段在概念上存在缺陷,类似于:

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();
}

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