function run(fn) { var gen = fn(); //自动开始协程 //对next进行包装,形成 Thunk 函数,遍历调用 function next(err, data) { var result = gen.next(data); if (result.done) return; result.value(next); } next(); /* 参考bootstrap的写法改写一下 !function next(err, data) { var result = gen.next(data); if (result.done) return; result.value(next); }(); */ } run(gen);
上面的写法很简单吧,这么改写之后就不需要你手动的去控制执行next的时机了
只需要执行run函数就行。但是要保证每一个yield后面都是一个 Thunk 函数,否则的话就不能自动执行了。
这一章的学习总结就结束了,我们学会了如何使用 Thunk 函数实现自动执行,但 Thunk 函数并不是 Generator 函数自动执行的唯一方案。
因为自动执行的关键是,必须有一种机制,自动控制 Generator 函数的流程,接收和交还程序的执行权。回调函数可以做到这一点,Promise 对象也可以做到这一点。
下一篇文章我们去看一下基于promise实现的自动执行器:co
感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:测试上述代码运行效果。
更多关于JavaScript相关内容可查看本站专题:《JavaScript常用函数技巧汇总》、《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》及《JavaScript数学运算用法总结》