如何让返回的数据在下面的延迟回调之外工作?
results.done(function(data)
{
alert(data); // works
});
alert(data); // does not work but need it to work...
答案 0 :(得分:4)
这有时会起作用,,但这是一个非常糟糕的主意。
var badIdea;
results.done(function(data) {
alert(data);
badIdea = data;
});
setTimeout(function(){
alert(badIdea);
},10000);
重新考虑你的逻辑,不要试图在完成回调之外获取数据。
答案 1 :(得分:1)
您需要将数据存储在可从外部作用域访问的位置。如果将它存储在回调内部的全局变量中,它将可用;您只需要确保外部代码仅在异步代码完成后执行。
或者,您可以多次调用“done”(.done()返回延迟对象,因此.done()。done()或temp = .done(); temp.done()可以工作) 。如果结果先前已完成,则回调将立即执行。