Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Ch2] Promiseはなぜ非同期なのか? #220

Open
azu opened this issue Mar 30, 2015 · 5 comments
Open

[Ch2] Promiseはなぜ非同期なのか? #220

azu opened this issue Mar 30, 2015 · 5 comments
Labels
Status: Proposal Request for comments

Comments

@azu
Copy link
Owner

azu commented Mar 30, 2015

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

の補足的な内容として、そもそも何でPromiseは非同期のみなのか? という事について。
逆に言えば、何故同期的な使い方は出来ないのか? についてまとめておきたい。

また、paldepind/sync-promiseのような実装使うことで同期的に扱えそうだけど、それによる問題はあるのか? について


このIssueの発端: https://twitter.com/azu_re/status/582435534250737665

ES5の範囲でOption<T>型を表すライブラリ、option-t を作った - snyk_s log みたいな話で、Promise的なインタフェースがあるといいんだけど(別にPromiseを求めてるんじゃなくて標準を求めているという趣旨なんだろうけど)、Promiseは常に非同期になるため使えないという話を聞いたので。

@azu
Copy link
Owner Author

azu commented Mar 30, 2015

[JS]JavaScriptにおけるPromise/A+仕様を、チュートリアル形式で詳しく解説します - YoheiM .NET
なぜこのような非同期の要件が仕様にあるのか?

結局は2.3. コラム: Promiseは常に非同期?で言ってることと同じで、同期的な実装だと場合によっては呼び出し順が変わってしまうという問題あるので、常に非同期とすることでこの整合性を解決するという感じっぽい。

逆説的には非同期の処理ができないPromiseならば、同期的に解決されても問題ないという解釈になるのかなー。
もうちょっと仕様レベルの解釈が欲しい

@azu
Copy link
Owner Author

azu commented Mar 30, 2015

SyncPromiseって名前は何か使うと幸せにならない感じというのは置いておいて、
このSyncPromiseはthenableじゃないけど、Promise.resolve(syncPromise) したらどうなるんだろ?

  • Promise.resolve(syncPromise) の挙動

ダメそう

@azu
Copy link
Owner Author

azu commented Mar 30, 2015

@azu
Copy link
Owner Author

azu commented Mar 31, 2015

@azu
Copy link
Owner Author

azu commented Apr 9, 2017

https://github.com/Microsoft/SyncTasks
同期Promiseのライブラリあった。
https://github.com/microsoft/reactxp で使われてた

@azu azu added Status: Proposal Request for comments and removed new-section labels Jul 27, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Status: Proposal Request for comments
Projects
None yet
Development

No branches or pull requests

1 participant