あなたのような関数を定義した場合:Ajax(XMLHttpRequest)オブジェクトは使用後にクリーンアップされますか?
function fetchData(callback) {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if(xhr.readystate === 4 && xhr.status === 200) {
callback(xhr.responseText);
}
};
xhr.open('GET', 'http://example.com/', true);
xhr.send();
}
今fetchData
機能をたくさん実行している私を想像してみてください。
コールバックの実行後にxhr = null;
を実行する必要がありますか?
JavaScriptはgarbage collectorですが、xhr
からnull
に設定されていません。
この質問は、XMLHttpRequest - freeing after use?と似ていますが、実際にオブジェクトがガベージコレクションによって削除される状態になっていることを説明する回答は得られませんでした。
これは実装仕様の詳細ですが、仕様がどうなるかはわかりません。 –
どこにxhrをnullに設定しますか? readystateハンドラの中にnullを設定すると、内部に立っている間にbuildilngを爆破しようとするようなものになります。 –
'callback'が実行されると、' xhr'への参照はなくなり、スコープ全体が収集されます。 – Brian