使用generator模拟async-await

2022-04-23  本文已影响0人  习惯水文的前端苏

\bullet 其他手写系列

    mini-diff \vert  promise \vert  vue3响应式 \vert  vue2响应式 \vert  mini-vue-router \vert  mini-vuex 

    mini-cli \vert  mini-webpack \vert  mini-commonJs \vert  bind、call、apply、bind 

    mini-+-*/

\bullet generator语法

\bullet 分析

    由于async是promise的语法糖,故需要在内部return一个promise

    由于promise需要手动调用.then来获取值,故需要手动实现一个函数来自动调用.then

    由于.then的返回值仍然是一个promise,故这样仍然不能直接获取

    由于generator通过.next获取的返回值是不需要二次调用其他api的,故可以将思路转成实现一个函数自动调用.next

\bullet 实现

    由于generator是一个部署了iterator接口并返回迭代器对象的函数,因此其实是可以考虑手动部署iterator+for...of遍历,但是对于关键字yield而言,暂时未想到好的替代方式,故暂直接用generator模拟一下?

上一篇 下一篇

猜你喜欢

热点阅读