6
ジェネレーターによるasync / awaitとES6のyieldの違い
この素晴らしい記事«ジェネレーター»を読んでいたところ、ジェネレーター関数を処理するためのヘルパー関数であるこの関数が明確に強調されています。 function async(makeGenerator){ return function () { var generator = makeGenerator.apply(this, arguments); function handle(result){ // result => { done: [Boolean], value: [Object] } if (result.done) return Promise.resolve(result.value); return Promise.resolve(result.value).then(function (res){ return handle(generator.next(res)); }, function (err){ return handle(generator.throw(err)); }); } try { return handle(generator.next()); } catch (ex) { return Promise.reject(ex); } …