函数返回异步响应

时间:2012-06-19 10:21:51

标签: javascript jquery ajax asynchronous

就像在这里被问到的人一样(但他的解决方案是调用其他函数)https://stackoverflow.com/a/10796326/315200 ...我想知道它是否可能有一个函数,它不响应第二个函数异步请求,但在异步请求响应时只是return

这样的事情可能是:

function callToFacebook() {
    var fbResponse;

    FB.api('/me', function (response) {
        fbResponse = response;
    });

    return fbResponse; //Will return undefined because CallToFacebook is async
}

在没有调用另一个函数的情况下,这可能不是某种可能吗?

我想要实现的是拥有一个我可以使用一些参数调用的函数,它将从异步Web服务(如FB)返回响应object

2 个答案:

答案 0 :(得分:2)

,这是不可能的。

您无法返回从异步操作返回的值。

考虑一下,你告诉10个人进行一英里跑步比赛,他们现在就开始,将在一分钟内完成+ - ,但你想知道答案现在,除非你在欺骗......

答案 1 :(得分:2)

简而言之,没有。您不能让异步函数同步返回有意义的值,因为此时该值不存在(因为它在后台异步构建)。

但是,您可以返回一个Promise对象,表示异步操作的“潜在返回值”,并使用done()或类似方法将函数绑定到该对象。这样,你的函数获得了返回语义(而不是必须将控制流链接到回调中),并保持异步。