返されたデータを以下の遅延コールバックの外で動作させるにはどうすればよいですか?
results.done(function(data)
{
alert(data); // works
});
alert(data); // does not work but need it to work...
返されたデータを以下の遅延コールバックの外で動作させるにはどうすればよいですか?
results.done(function(data)
{
alert(data); // works
});
alert(data); // does not work but need it to work...
これはうまくいく場合もありますが、非常に悪い考えです。
var badIdea;
results.done(function(data) {
alert(data);
badIdea = data;
});
setTimeout(function(){
alert(badIdea);
},10000);
ロジックを再考し、done コールバックの外でデータを取得しようとしないでください。
外部スコープからアクセス可能な場所にデータを保存する必要があります。コールバック内からグローバル変数に格納すると、使用可能になります。したがって、外部コードが非同期コードの完了後にのみ実行されることを確認する必要があります。
または、「done」を複数回呼び出すこともできます(.done()は遅延オブジェクトを返すため、.done()。done()またはtemp = .done(); temp.done()が機能します)。結果がすでに完了している場合、コールバックはすぐに実行されます。