0%

自己动手实现系列 ---- async、await

原理

就是利用 generator (生成器)分割代码片段。然后我们使用一个函数让其自迭代,每一个 yieldpromise 包裹起来。执行下一步的时机由 promise 来控制

实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function _asyncToGenerator(fn) {
return function() {
var self = this, args = arguments;
return new Promise(function(resolve, reject) { // 将返回值 promise 化
var gen = fn.apply(self, args); // 获取迭代器实例
function _next(value) { // 执行下一步
asyncGeneratorStep(gen, resolve, reject, _next, _throw, 'next', value);
}
function _throw(err) { // 抛出异常
asyncGeneratorStep(gen, resolve, reject, _next, _throw, 'throw', err);
}
_next(undefined); // 第一次触发
});
};
}
如果觉得不错请支持作者
------ 版权声明 ------

本文标题:自己动手实现系列 ---- async、await

文章作者:

发布时间:2020年03月24日 - 15:50

最后更新:2020年04月02日 - 03:20

原始链接:https://blog.lifesli.com/2020/03/24/do-it-yourselfery-async-await/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。