async
の機能とco
libraryが平和に共存できるため、1つずつ移行する必要はありません。
async
機能がco
ジェネレータ関数の内部で使用することができ、彼らは約束を返す関数です。しかし行くほか
(async function() {
await co(genFn(1));
// for generator functions with no arguments, can also be
await co(genFn);
})()
.catch(console.error);
:
co.wrap(function*() {
yield asyncFn(1);
})()
.catch(console.error);
ジェネレータ機能がasync
関数内で使用することができます数百のジェネレータ関数を変更してそれらを変更する*(...){から非同期関数(...){、how e lseは発電機 をasync/awaitと連携させることができますか?
発電機がco
との関連でのみアプリケーションで使用されていることを考慮すると、それらは自動的に交換することができます。 function*
および*
の方法は、async
の対応物に置き換えられ、yield
およびyield*
は、await
で置き換えられる。
これを行う前に、いくつかの予備リファクタリングを行う必要があります。 this list of yieldablesからは、約束と発電機のみを使用してください。並列実行(配列やオブジェクト)はそれぞれPromise.all
と置き換えなければならない:
const results = yield [...];
const results = yield Promise.all([...]);
FYI、 'async/await'はES7の一部ではありません。 –
また、コードベースの大部分を書き直したい場合は、可能であればツールを使用してください。https://github.com/facebook/jscodeshift(免責事項:私が書いたもの) –
移行の理由? –