ryou / blog_sdmilieu_net

個人的な技術メモ
0 stars 0 forks source link

JSの非同期処理に関してもっとちゃんとする #35

Open ryou opened 6 years ago

ryou commented 6 years ago

https://qiita.com/kidach1/items/d997df84a0ede39d76ad

ryou commented 6 years ago

eslintで、async/awaitのループ内での使用を禁止する項目がある理由を調べる

ryou commented 6 years ago

eslintのno-await-in-loopは、awaitをループ文内で使用すると、逐次処理となってしまい非同期処理の利点を生かせなくなるからやめろっていう意味っぽい。

ただ、理由があって逐次処理をしている(配列の前から順番に実行して欲しい、例外を吐いたタイミングで残りの処理を実行したくない等)場合も結構あるので、その場合は

/* eslint-disable no-await-in-loop */
// 〜な理由でループ内でのawaitを許可
for (item of items) {
  await someAsyncFunc();
}
/* eslint-enable no-await-in-loop */
ryou commented 6 years ago

https://gist.github.com/anonymous/32b263431a40d60935a2d901460b7630

ryou commented 6 years ago

Promise内で発生した例外は、catchされなかった場合どのように処理されるか仕様で決まってないっぽい。

現状プラットフォームの実装依存だけど、ブラウザ・Node.jsともにコンソールに出力してくれてはいる