0

終了時にjQuery Deferredを配列から削除するにはどうすればよいですか? 私は持っている:

myarray[key]=$.ajax({

}).done(function(response){

 // work with response,
 // then delete myarray[key];

});

これは動作しません:

var myvar=function(){
  if(myvar){
    alert(1);
  }
} 

変数が設定されているかどうかを確認するイベントのために宣言を終了する必要があるように見えるので、変数宣言内の変数の削除は機能しないはずです。

4

1 に答える 1

1

これは、myarray が配列かオブジェクトかによって異なります。それがオブジェクトの場合、あなたはただ行うことができます

delete myarray[key];

ただし、配列の場合は、もう少し複雑です。John Resig が Array 要素の削除に関する投稿をここに書きました

もっと簡単にしたい場合、それが配列である場合は、次のようにして削除できます

myarray[key] = undefined;

myarrayただし、これを行うと、それ以上小さくならないことに注意してください。

$.ajaxDeferred オブジェクトを.done()返し、別の Deferred オブジェクトを返します。最適には、次のようにします。

myarray[key]=$.ajax({

});
myarray[key].done(function(response){
 // work with response,
 // then delete myarray[key];
});
于 2012-10-05T19:03:57.623 に答える