0

返されたデータを以下の遅延コールバックの外で動作させるにはどうすればよいですか?

             results.done(function(data)
             {
                   alert(data); // works
             });

             alert(data); // does not work but need it to work...
4

2 に答える 2

4

これはうまくいく場合もありますが、非常に悪い考えです。

var badIdea;
results.done(function(data) {
    alert(data);
    badIdea = data;
});

setTimeout(function(){
    alert(badIdea);
},10000);

ロジックを再考し、done コールバックの外でデータを取得しようとしないでください。

于 2013-01-17T20:29:10.340 に答える
1

外部スコープからアクセス可能な場所にデータを保存する必要があります。コールバック内からグローバル変数に格納すると、使用可能になります。したがって、外部コードが非同期コードの完了後にのみ実行されることを確認する必要があります。

または、「done」を複数回呼び出すこともできます(.done()は遅延オブジェクトを返すため、.done()。done()またはtemp = .done(); temp.done()が機能します)。結果がすでに完了している場合、コールバックはすぐに実行されます。

于 2013-01-17T20:32:27.657 に答える