Upgrade to Pro — share decks privately, control downloads, hide ads and more …

1時間半で克服するJavaScriptの非同期処理/async_javascript_kokufuku

marchin
June 09, 2022

 1時間半で克服するJavaScriptの非同期処理/async_javascript_kokufuku

marchin

June 09, 2022
Tweet

More Decks by marchin

Other Decks in Programming

Transcript

  1. 自己紹介 - 名前: 阿部 真之 - 仕事: 株式会社ゆめみ でAndroidエンジニアしてます -

    最近はサーバサイド Kotlinの仕事も始めました - 趣味 - コーヒー、ビール、アニメ、ゲーム、読書、 etc… - Twitter: @marchin_1989
  2. - タイマー - setTimeout - setInterval - I/O - fs.readFile

    - fetch - … JavaScriptでの非同期APIの例
  3. - タイマー - setTimeout - setInterval - I/O - fs.readFile

    - fetch - … JavaScriptでの非同期APIの例 => コールバックを受け取るものや、Promiseを返すものなど違いがあり、 たくさんあるが、利用するときはドキュメントをしっかりみるべし
  4. Promiseとは - Promiseオブジェクトは、時間のかかる処理(非同期処理)を呼び出して、いつか結 果を返すと約束するもの。 - 結果は、成功 or 失敗 で返る。 -

    Promiseのthenメソッドを使って、非同期処理が完了し、成功が返ってきたときの処 理を、コールバック関数で登録できる。 - 失敗時の処理はcatchメソッドで登録。 - Promiseを使うことで、コールバック関数による非同期処理のネストを解消できる。 - 標準ライブラリや、サードパーティのライブラリがPromiseを返すAPIを提供している
  5. async/await - async/awaitを利用することで、Promiseチェーンを使うよりすっきり書ける - ただし、Promiseの上に成り立っているので、Promiseの理解は必須 - asyncキーワード - 関数を非同期関数にするキーワード -

    返り値が暗黙的にPromiseになる - awaitキーワード - async関数の中でしか使えない - Promiseオブジェクトの前につける - Promiseが「成功(resolve)」を返すまで処理が中断でき、同期的(コードの順番)にかける(ブロッキ ングするわけではない) - 成功時の結果を受け取れる( thenのコールバックの引数を返す)
  6. 参考 - Overview of Blocking vs Non-Blocking | Node.js -

    https://nodejs.org/en/docs/guides/blocking-vs-non-blocking/ - The Node.js Event Loop, Timers, and process.nextTick() - https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/ - 非同期 JavaScript - ウェブ開発を学ぶ | MDN - https://developer.mozilla.org/ja/docs/Learn/JavaScript/Asynchronous - What the heck is the event loop anyway? | Philip Roberts | JSConf EU - https://www.youtube.com/watch?v=8aGhZQkoFbQ - JavaScript Visualized Series' Articles - DEV Community - https://dev.to/lydiahallie/series/3341