ES6中的生成器和收益的工作机制

时间:2018-10-31 01:59:27

标签: ecmascript-6 generator

 function* help(){
       const aa = yield 'no_help';
         return aa;
}
const a = help();
a.next()// valid output
a.next('helping hand')// valid output

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

1 个答案:

答案 0 :(得分: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(),因此无法正常工作。

相关问题