当 generator 返回的值都是 Promise,
那么执行 Promise 以后,只有 resolve 和 reject 两种结果,这个执行器就很固定,
那自然可以写一个通用的执行器来自动调用 next、throw 和 return。
这个就是 async await 的原理,只不过被做成了语法糖。
- async await 本质上不过是一个 generator 的执行器。
- 如果 redux-saga 用 async await 实现,那么所有的异步逻辑都要命令式的写在 await 后面,
- 这样会导致异步过程很难测试。所以 redux-saga 自己实现了一个执行器