Open azu opened 10 years ago
https://gist.github.com/azu/11494644
キャンセル出来るPromiseのサブクラス書いてみたけど、Nativeのpromiseだと上手くいかない。
nativeのpromiseのsubclassは@@create
が実装されてないとどうにもできないのかな?(class
を使う必要がある)
https://gist.github.com/azu/11497402
delegate version も書いてみた。
ref: Chapter 28. Subclassing Built-ins
あんまりnative promiseの拡張って現実的じゃないのかな?
元から拡張のあるライブラリを使うほうが普通にいいのはわかってるけど、 以下みたいに今あるライブラリがnative promiseを使える場合はそっちを使う見たいな実装やる場合にこういう話になりそうな気がする。 (native promiseをベースにするのはパフォーマンスとか、細かい仕様の対応を投げられるとかがあると根本にあると思うけど)
class MyPromise extends Promise
と書けるまで待たないとできない感じなのかな。
同じ試み。native promiseだと同じ動いてない感じがする。(Firefox 35、Chrome 36.0.1972.2 canary)
ブラウザの実装自体も Promise.call(this);
あたりで挙動が違う気がする…
現段階だとNative Promiseのサブクラスの作り方がよくわかってない。 (最初のリリースには多分これ含められない)
Service Workerまわりからこの辺の話が進みそう
AbortController - Web APIs | MDN
fetch周りからやっとcancelに関する仕様がDOMに入った
cancelのやつをAbortControllerに合わせたほういいのかなー 似てはいるけどAPIが違う
Ch4 #5 Promiseのサブクラスの作り方 と UseCase or Libraryについて