原理
就是利用 generator
(生成器)分割代码片段。然后我们使用一个函数让其自迭代,每一个 yield
用 promise
包裹起来。执行下一步的时机由 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) { 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); }); }; }
|