如何让返回的数据在下面的延迟回调之外工作?
             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() 会起作用)。如果结果之前已经完成,回调将立即执行。