ECMAScriptでは、私は基本的には.cancel()
機能を持つPromiseであるCancelablePromise(https://github.com/alkemics/CancelablePromise)を使用しています。 .cancel()
が呼び出されるたびに、.then()
および.catch()
に提供されるコールバックは実行されません。私はキャンセル約束を待っていたらどうなるのだろうかawaitが返されない場合はどうなりますか?
:
CancelablePromise promise = new CancelablePromise((resolve, reject) => resolve(1));
const promise2 = promise.then(x => x + 1);
promise.cancel();
console.log(await promise2);
予想ように、このコードは動作しますが、何もコンソールに出力されません。しかし、GCで収集できない、または完全に安全で有効なぶら下がりスレッド/参照が作成されるのではないかと思います。
私は、GCが「取消し可能な約束」を「知っていない」ので、GCが「収集」できないと考えていると思います。申し訳ありませんが、おそらくすべてのjavascriptエンジンの内部知識この質問でつまずく可能性があり、決定的な答えを得ることができます:p –
も参照してください。http://stackoverflow.com/q/34289551/1048572 – Bergi
そのライブラリは使用しないでください。それは恐ろしく実装されています。 – Bergi