azu / promises-book

JavaScript Promiseの本

Home Page:https://azu.github.io/promises-book/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Promise#then の中身が非同期となる理由について

azu opened this issue · comments

commented

http://azu.github.io/promises-book/#promise-is-always-async

で書いた内容は事実しか話してないため、何故が書かれてなくて理解が難しい。

  • thenで登録する時点でpromiseの状態が決まっていた場合
  • プロクラム的にはどちらでも可能
  • Promiseの仕様はキューに入れて非同期実行される
  • それは何故?
  • 一般に状態によって同じ関数が同期、非同期を使い分けるのはおかしい
  • そのためPromiseは常に非同期で実行されることを選んだ

これをコラムを超えない範囲でやるの中々難しい。(セクションにした方がいいのかな)

仕様的な解説でやると、結局はそういう仕様だからという事実でしかないので、何故を中心に書いた方がいいと思った。

commented

この辺はライブラリ実装者とかでも混乱してた感じなので、whyの部分はeffective jacascriptから引用するのがよさそう。

commented

Promise.resolve(thenable) は同期的に実行されるという仕様バグがあったぐらいなので、
あんまり仕様的に深く書くところじゃないきもする。

commented

関連するアンチパターンは ゴーストPromise