如何从延迟回调中获取数据;

时间:2013-01-17 20:25:42

标签: jquery

如何让返回的数据在下面的延迟回调之外工作?

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

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

2 个答案:

答案 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()可以工作) 。如果结果先前已完成,则回调将立即执行。