ES2024
ES2023 ← ES2024 → ES2025
ES2024って2024年1月公開じゃなかったっけ綾坂こと.icon
Promise.withResolversとかObject.groupByとか
【JavaScript】ES2024の新機能まとめ #日本語訳 - Qiita
Promise.withResolvers()
promise, resolve, rejectを含むオブジェクトを返す
まあこうすればいいけどね
code:js
let resolve;
let reject;
let promise = new Promise((a,b)=>{resolve=a;reject=b;})
これも便利だけど、新規作成したpromiseを停止しやすくする仕組みより、既存のpromiseを外部から停止できる関数がほしいMijinko_SD.icon
bsahd.iconつAbortController
これも結局Promise内部に細工する必要あるのでは…?Mijinko_SD.icon
問題は既存コード(ライブラリなど)が作成したPromiseをプロセスのキルみたいに外部から強制終了できないことMijinko_SD.icon
Nodeなら組み込みライブラリを使用してサブプロセス作って管理する方法があるけれど…
ブラウザでは使えない
そういうコード書くの少し面倒
メモリ共有もできなかった気がする
ゾンビインスタンスがあるとメモリ消費量が処理時間に比例して増加するので、どうにかしたいところ
強制終了をするような設計が間違ってるのでは...bsahd.icon
間違ってないです。終了できないライブラリに対処する単純な方法が強制終了しかないというだけですMijinko_SD.icon
強制終了できなかったら、例えばOSの場合、ゾンビ化するアプリケーションを起動すると閉じるにはOSを再起動するしかなくなります
これが例えば、OSの要件に「24時間稼働させること」があったら?というのを考えてみてください
というか強制終了機能が付くとfinally的な処理が難しくなりそうだから
kill -9相当のことがしたいのかな
どうしても強制終了したいならWeb Workerかな...
あくまでworkaroundかな...
根本的な解決をしてほしい
「動いてるから触らない」はクソコードを生み出してしまう
OSSならフォークとかできる
ソースコードを解析して修正する人手は誰が用意してくれます?Mijinko_SD.icon
趣味なら直せるけど、業務だとそこまで面倒見るのきついっす
お金出ないので
Abort済みのAbortControllerってどう処理されるんだ?
関数の最初に自分で判定するっぽい
まあEventTargetだからそうだよな...
じゃあsignalリレーをしてもいいのかな
他言語だとどうかな~と思ったが、Goでもgoroutineはkill -9できないっぽい
できないというのがどういうことかよくわからないけど、cancelという名のcontextを経由してgoroutineを終了させるのが定石?inajob.icon
それだと、abortsignalと同様ゴルーチン内部を変更する必要がbsahd.icon
Array Grouping
配列をグルーピングするメソッドObject.groupByとMap.groupByを追加します。
これの逆で、既に分類されたオブジェクトを平坦に戻す仕組みは無いのだろうかMijinko_SD.icon
Object.values(tarfet).flat()bsahd.icon