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 回答