Skip to content

JavaScript Promiseの本 v2

Latest
Compare
Choose a tag to compare
@azu azu released this 23 Oct 10:57
· 47 commits to master since this release

JavaScript Promiseの本をES2015+に改定したv2へのメジャーアップデートです。

変更点

Promise本 v2の主な変更点は次の通りです。

コードベースをES5からES2015+に変更 #249 #323

(Promise以外は)ES5ベースだったサンプルコードをES2015ベースにすべて書き換えました。
そのため、サンプルコードにもES2015の構文を使っています。

  • Arrow Function
  • Async Function(章として追加)
  • const
  • class

変更理由としては、ES2015のほうが簡潔に書ける部分(classを使ったDeferredなど)があることや、
varよりもconstletの利用を促す傾向が全体的にあるためです。

ES2015の基本的な文法に不安がある方は、ES2015ベースのJavaScript入門書であるJavaScript Primerも作成しているので、併せて読んでみてください。

また、サンプルコードがES5のものを読みたい場合はPromise本 v1のアーカイブも作成してあるので、こちらを参照してください。

Async Functionの章を追加 #246 #317

新しい章として5. Chapter.5 - Async Functionを追加しました。

Async Function(asyncawait)はES2017で追加された新しい非同期処理に関する構文です。
ただし、Async Functionの内部的な処理にはPromiseが大きく関係しています。
そのため、Async FunctionとPromiseのどちらかを使えば良いという話ではなく、Async FunctionとPromiseは共存する関係にあります。

この章では、Async Functionの基本的な使い方から典型的なユースケースなどを見ていきます。

Async Generatorについては触れていないため、この辺は今後の課題です。
(そもそもGeneratorについて触れてない)

Promise#finllayの対応 #284 #294

ES2018からPromiseチェーンの最後の処理を簡潔に書けるPromise#finallyメソッドが追加されました。
その解説を2.6. Promise#finallyに追加しています。

その他

寄付手段としてGitHub Sponsorsを追加

寄付の手段としてJavaScript Promiseの本 付録を好きな値段をつけて購入する以外にも、GitHub Sponsorsでの寄付を追加しました。

Promise本専用のプランは特に用意してませんが、何か希望があったら言ってください。

HTTPS

ウェブサイトが https://azu.github.io/promises-book/ のように https になっています。

Fetch APIとAbortController

PromiseベースのAPIであるFetch APIやキャンセル処理であるAbortControllerについても簡単に触れています。

本文はXHRをラップしたfetchURLベースで話を進めていますが、この処理も少しだけFetch APIに寄せています。(もともとはgetURLという名前だった。fetch get + res.ok + res.text()のイメージ)

DocTest

内部的にpower-doctestを使ったテストを一部に取り入れました。

CONTRIBUTING.mdにもDocTestについてを追加しました。
コントリビューション待ってます!


CHANGELOG

最後に細かいものも含めた変更点の一覧です。

Minor Changes

  • コードベースをES5からES2015+に変更 #249 #323
  • Async Functionの章を追加 #246 #317
  • Promise#finllayの対応 #284 #294
  • jQuery 3.0 対応#241
  • jsprimerとの連動 #289
  • getURLfetchURLにリネーム #310
  • Unhandled Rejectionの追記 #253
  • ウェブサイトをhttpsへの移行 #290
  • v1のアーカイブを作成 #325
  • AbortControllerへの言及 #259 #336
  • Fetch APIについて言及 #295 #334

Commitベースの変更点

Fixes

Features