我有一些代码可以做到这一点:
function A(){
$.ajax({
...blah blah...
success: function(data){
return data;
});
}
然后我试图稍后使用这些数据:
var x = A();
x.doSomething();
但是从不存储x,因为A()需要一段时间。有什么方法可以避免这种情况吗?
答案 0 :(得分:1)
关于同一主题的其他问题:
我相信还有更多。然而,所有这些建议都归结为两条路径。
function A(callback){
$.ajax({
//...blah blah...
success: function(data){
if (typeof callback == 'function') callback(data);
}
});
}
// passing our function through will cause it to be called after the data
// is received
A(function(data) {
data.doSomething();
});
这个选项似乎更容易,但它会在等待你的AJAX请求时阻止所有脚本执行,因此不是那么可取
function A() {
var retValue;
$.ajax({
async: false,
success: function(data){
retValue = data;
}
});
return retValue;
}
var x = A();
x.doSomething();
答案 1 :(得分:0)
为什么不操纵回调中的数据?
答案 2 :(得分:0)
接受meder的回答并扩展它:
为什么不立即采取行动取得成功,如:
function A()
{
$.ajax
(
{
success: function(data)
{
data.doSomething();
}
}
);
}