【问题标题】:Generators in ES6 and the working mechanism of yieldES6 中的 Generators 和 yield 的工作机制
【发布时间】:2019-04-04 03:22:02
【问题描述】:
 function* help(){
       const aa = yield 'no_help';
         return aa;
}
const a = help();
a.next()// valid output
a.next('helping hand')// valid output

在我读过的文档中,yield 完全消耗了下一个调用,所以我的困惑是,我们如何才能再次调用 next 方法,如上所示,其中包含一些值

【问题讨论】:

  • 你的目标是什么?我认为您在此处发布的代码还没有完全掌握生成器的实用性。
  • 现在我想了解我发布的代码工作机制,因为它与理论概念冲突
  • 您说的具体是哪个理论概念?目前还不清楚。

标签: ecmascript-6 generator


【解决方案1】:

通过使用yield,您可以将函数“拆分”为多个可以单独执行的部分(但只能按顺序执行):

 function* help(){
   // part 1starts
   //....
   const aa = yield 'no_help'; // part 1 ends
   // part 2 starts
   // ...
     return aa; // part 2 ends
 }

如果您调用 a.next(),第 1 部分将被执行,直到 yield 和中间结果 'no_help' 被返回给调用。然后您调用a.next('your helping hand') 将执行第 2 部分,您将取回函数返回的内容。由于没有第三方,再次调用a.next() 将不起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-28
    • 2018-06-03
    • 2014-06-26
    • 2014-01-28
    • 2015-08-12
    • 2015-12-11
    • 2013-07-05
    • 2015-04-18
    相关资源
    最近更新 更多