JavaScript中是否有一种方法可以从子函数调用返回父函数的Return语句?

5

我遇到了一个非常特殊的情况。我想要通过ajax下载一些数据并且将其返回。到目前为止,异步和同步模式都不能及时地将数据传递给返回。我是否可以从子函数中调用返回来解决这个问题,或者使用timeOut来解决这个问题?我无法想到其他方法,但是必须返回数据。


返回值不是一个函数!虽然也许引发一个异常可以达到你想要的效果? - Ponkadoodle
有没有某种方法,使异常可以像return一样返回数组? - Kyle Hotchkiss
也许在你的函数中说明你正在使用jQuery会更合适? - zneak
1
可能是重复的问题:如何从嵌套的匿名函数返回值到父函数?(https://dev59.com/3mvXa4cB1Zd3GeqPFAnU) - Patsy Issa
3个回答

3
您可以提供一个回调函数:
function parentfunction(callback) {
    callback(getAjax());
}

function childfunction() {
    parentfunction(function(ajaxData) {
        //Do stuff with data
    });
}

2

你的问题的答案是否定的。

在异步请求中,函数必须在结果可用之前返回。为了解决这个问题,采用了回调模式-在调用这样的函数时,你不会期望得到一个返回值,而是提供一个回调函数-在结果可用后调用该函数。

这里有一个简单的例子:

var someValue;
fetchValueFrom('http://example.com/some/url/with/value', function(val) { 
  someValue = val; 
  doSomethingElseWith(someValue);
});

在这里,我们创建了一个函数,并将其作为第二个参数传递给fetchValueFrom调用。一旦该值可用,此函数将被调用,并将设置变量并调用另一个函数以继续执行。


-1

只需将false作为第三个参数传递给XMLHttpRequest.open。它意味着“同步运行此查询”。

请自行参考


我很希望 $.ajaxSetup({async:false}) 能够为我工作,这样能解决我的所有问题。但是我的代码似乎忽略了它? - Kyle Hotchkiss
2
从Gecko 30.0(Firefox 30.0 / Thunderbird 30.0 / SeaMonkey 2.27)开始,由于对用户体验的负面影响,主线程上的同步请求已被弃用。 - Dan Dascalescu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接