Skip to content

Releases: azu/promises-book

JavaScript Promiseの本 v2

23 Oct 10:57
@azu azu
Compare
Choose a tag to compare

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

1.6.5

20 Nov 10:24
@azu azu
Compare
Choose a tag to compare

Bug Fixes

1.6.4

20 Nov 04:03
@azu azu
Compare
Choose a tag to compare

Bug Fixes

  • promise-and-array: CORSとXHRについての注意を追加 (2ed4b22), closes #273
  • promise-resolve: jQueryがロードされているページで動くコードに変更 (02cfd0b)

1.6.3

12 Aug 13:55
@azu azu
Compare
Choose a tag to compare

Bug Fixes

  • ch4: Notification APIは最新の仕様ではPromiseに対応していることを注記 (ff9d169), closes #264

1.6.2

12 Aug 13:21
@azu azu
Compare
Choose a tag to compare

Refactor

  • 表記揺れを修正

1.6.1

1.6.0

11 Jul 14:37
@azu azu
Compare
Choose a tag to compare

Bug Fixes

  • Introduction: Effective JavaScriptがリンク切れ (3a8490f), closes #263

Features

1.5.2

02 Apr 09:11
@azu azu
Compare
Choose a tag to compare

Bug Fixes

  • promise-all: fix typo #256
  • css: remove "text-rendering: optimizeLegibility" which is bad style (c91168d)
  • css: remove letter-spacing (6b0a1ba)

1.5.1

12 Aug 11:25
@azu azu
Compare
Choose a tag to compare

1.5.1 (2015-08-12)

chore

  • chore(promise-all): Promise.all の概説の不自然な文章を修正 (7705287)
  • chore(readme): 「を」が抜けていたのを修正 (89cab19)

fix

  • fix(Ch1): [[PromiseState]]をES6の用語に合わせて修正 (d2a81d8)
    • ES6 Promiseの状態の名前を変更 #244
  • fix(Ch1): 状態の用語を統一 (ec13671), closes #242
  • fix(Ch4): fix broken link (728af6a), closes #238

v1.5.0: ES6正式版対応

22 Jun 00:02
@azu azu
Compare
Choose a tag to compare

ECMAScript® 2015 Language Specificationリリースに対応

Fixes

  • ECMAScript 6の策定完了後の変更点 #232
    • ECMAScript 6の仕様が正式にリリースされたので、文章をES6がリリースされたことを前提としたものへ変更
  • 図から新しいpromiseオブジェクトを返してるか分からない #203
  • Notification APIのfeature detectを変更 #236
    • 4.2.3. Web Notification as Promiseのサンプルコードを改善