Javascript 访问内部箭头函数

Javascript 访问内部箭头函数,javascript,ecmascript-6,babeljs,Javascript,Ecmascript 6,Babeljs,由于无法创建箭头生成器函数, 在arrow函数的上下文中从不使用yield var arrowGenerator = *() => { }; 然后您应该能够在生成器函数的上下文中使用yield。就这样 但在巴别塔中,它在arrow函数的上下文中使用yield,而不是genreator 我想这样做,这样你就不需要返回一个带值的回调函数,只需要产生它 function* gen() { yield function (callback) { funcWithCallb

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

var arrowGenerator = *() => { };
然后您应该能够在生成器函数的上下文中使用yield。就这样

但在巴别塔中,它在arrow函数的上下文中使用yield,而不是genreator

我想这样做,这样你就不需要返回一个带值的回调函数,只需要产生它

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

显然,这两个示例不起作用,您的代码片段也不起作用。

问题是什么?您不能。您只能在生成器函数体中直接使用yield。您希望func如何处理该函数?您不能跨函数屈服。另外,您想在这里做什么?您的示例可以简化为函数*gen{yield funcWithCallback;}-即使在那里,您也不会从回调内部屈服。但是当您屈服时,您不会返回函数并结束函数的执行,而是挂起它。然后这应该是可能的,对吧?不,不应该。这就是语言/语法的规范。这不是一个观点,我上面的例子说明了你的尝试中的错误。好的,谢谢你澄清
function f1() {
  f2((value) => {
    return someValue; // while this is legal, it doesn't cause f1 to return
  });

  codeAfterReturn();
}