关于ES6上的Generator is already running相关问题的唠叨

了解了ES6的同学都知道,Generator是一个异步的操作方法,有在执行异步的时候等待的效果。

但有时候,我们在编写的时候,容易出现同步与异步的混合编写。

例如,判断某个条件下,会分为异步和同步的两种执行方式。

如果你的程序执行,出现了Generator is already running,可能你就进入了一个同步与异步的误区。

比如执行了一次next(),在方法里面判断这里处理同步的需求,在同步完成后又执行了一次next(),这一次对JS的单进程来说,就是上一次的next尚未结束,又开始了新的一次next,固然导致出现这个错误的警告。

我们需要通过一些方法去绕过同步中的next,例如本身就是异步的回调,又或者临时加一个setTimeout(function,time),这样就能避免这个矛盾的错误。


注:以上的运行,我是基于NodeJS在做,没有在Chrome上运行过。

maodun.jpg

阅读: 734
在同意共创许可协议(CC BY-NC-SA-4.0)的前提下,您可以转载本文。
橙色阳光
https://oss.so/article/82

相关阅读

留言评论

暂无留言

精品域名

出售精品域名 Yumi.La ¥5000.00