--- title: FinalizationRegistry.prototype.cleanupSome() slug: Web/JavaScript/Reference/Global_Objects/FinalizationRegistry/cleanupSome tags: - FinalizationRegistry - JavaScript - Method - Prototype - Reference translation_of: Web/JavaScript/Reference/Global_Objects/FinalizationRegistry/cleanupSome ---
cleanupSome() メソッドは、 {{jsxref("FinalizationRegistry")}} 内のオブジェクトのうち、まだコールバックが呼ばれていないが回収されているオブジェクトの数が実装で選択された場合に、クリーンアップコールバックを起動します。このメソッドはオプションです。
registry.cleanupSome([callback]);
callback {{optional_inline}}cleanupSome への呼び出しによって起動されるコールバックだけに使用するコールバックを指定します。指定した場合、このコールバックは FinalizationRegistry で作成されたものの代わりに使用されます。undefined です。
通常、この関数を呼び出すことはありません。コールバックを適切に行うためには、 JavaScript エンジンのガベージコレクターに任せてください。この関数は主に、イベントループを発生させない、通常の JavaScript コードよりも WebAssembly で出てくる可能性の高い、長期に実行されるコードに対応するために存在します。また、コールバックが呼び出されない場合があることにも注意してください (例えば、ターゲットが回収されたレジストリ項目が存在しない場合)。
レジストリからクリーンアップされる (クリーンアップコールバックを呼び出す) 回収オブジェクトの項目数は、実装で定義されています。実装によっては、対象となる項目を一つだけ削除したり、対象となるすべての項目を削除したり、あるいはその間のどこかで削除したりすることもあります。
registry.cleanupSome?.(heldValue => {
// ...
});
このメソッドはオプションであり、実装によってはこのメソッドを持たない場合があります。詳細は HTML issue #5446 を参照してください。このメソッドはオプションなので、それを呼び出す前にそのメソッドが存在することを確認する必要があります。そのための一つの方法は、上の例のようにオプション連結 (?.) を使用することです。
| 仕様書 |
|---|
| {{SpecName('WeakRefs', '#sec-finalization-registry.prototype.cleanupSome', 'FinalizationRegistry.prototype.cleanupSome')}} |
{{Compat("javascript.builtins.FinalizationRegistry.cleanupSome")}}