azu / promises-book

JavaScript Promiseの本
https://azu.github.io/promises-book/
MIT License
1.38k stars 579 forks source link

[Ch4] Promise subclassing / Promiseのキャンセル #6

Open azu opened 10 years ago

azu commented 10 years ago

Ch4 #5 Promiseのサブクラスの作り方 と UseCase or Libraryについて

azu commented 10 years ago

https://gist.github.com/azu/11494644

キャンセル出来るPromiseのサブクラス書いてみたけど、Nativeのpromiseだと上手くいかない。

nativeのpromiseのsubclassは@@create が実装されてないとどうにもできないのかな?(classを使う必要がある)

azu commented 10 years ago

https://gist.github.com/azu/11497402

delegate version も書いてみた。

ref: Chapter 28. Subclassing Built-ins

あんまりnative promiseの拡張って現実的じゃないのかな?

元から拡張のあるライブラリを使うほうが普通にいいのはわかってるけど、 以下みたいに今あるライブラリがnative promiseを使える場合はそっちを使う見たいな実装やる場合にこういう話になりそうな気がする。 (native promiseをベースにするのはパフォーマンスとか、細かい仕様の対応を投げられるとかがあると根本にあると思うけど)

class MyPromise extends Promise

と書けるまで待たないとできない感じなのかな。

azu commented 10 years ago

https://github.com/skaegi/promises-cancel

同じ試み。native promiseだと同じ動いてない感じがする。(Firefox 35、Chrome 36.0.1972.2 canary)

ブラウザの実装自体も Promise.call(this); あたりで挙動が違う気がする…

azu commented 10 years ago

subclassの実装参考

https://github.com/paulmillr/es6-shim/blob/cc957b039332d3b9aa3b1603841a30b6b19ce7bc/test/promise/subclass.js

azu commented 10 years ago

現段階だとNative Promiseのサブクラスの作り方がよくわかってない。 (最初のリリースには多分これ含められない)

azu commented 10 years ago

Promises: The Extension Problem (part 4) | getiblog

関連

azu commented 9 years ago

Service Workerまわりからこの辺の話が進みそう

azu commented 8 years ago

Proposals

azu commented 7 years ago

AbortController - Web APIs | MDN

fetch周りからやっとcancelに関する仕様がDOMに入った

azu commented 5 years ago

cancelのやつをAbortControllerに合わせたほういいのかなー 似てはいるけどAPIが違う