promises-book icon indicating copy to clipboard operation
promises-book copied to clipboard

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

Open azu opened this issue 11 years ago • 10 comments

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

  • https://github.com/cscott/prfun
  • https://github.com/paulmillr/es6-shim/issues/170
  • https://github.com/domenic/promises-unwrapping/issues/87

azu avatar May 01 '14 23:05 azu

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

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

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

azu avatar May 03 '14 12:05 azu

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

delegate version も書いてみた。

ref: Chapter 28. Subclassing Built-ins

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

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

  • https://github.com/cujojs/when/issues/248
class MyPromise extends Promise

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

azu avatar May 03 '14 13:05 azu

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

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

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

azu avatar May 03 '14 13:05 azu

subclassの実装参考

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

azu avatar May 03 '14 13:05 azu

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

azu avatar May 08 '14 02:05 azu

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

  • https://esdiscuss.org/topic/cancelable-promises

azu avatar Mar 03 '15 05:03 azu

AbortController - Web APIs | MDN

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

azu avatar Oct 09 '17 14:10 azu

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

azu avatar Oct 23 '19 06:10 azu