0

就像一个人在这里问的那样(但他的解决方案是调用另一个函数)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
}

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

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

4

2 回答 2

2

,这是不可能的。

您不能返回从异步操作返回的值。

想一想,你告诉 10 个人进行一英里跑比赛,他们现在开始,一分钟内结束 +-,但你现在想知道答案,除非你作弊,否则这是不可能的......

于 2012-06-19T10:23:42.023 回答
2

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

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

于 2012-06-19T10:27:42.680 回答