【问题标题】:Function return async response [duplicate]函数返回异步响应[重复]
【发布时间】:2012-06-19 10:21:51
【问题描述】:

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

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

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

【问题讨论】:

  • 如果可能,这将作为答案给出。

标签: javascript jquery ajax asynchronous


【解决方案1】:

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

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

【讨论】:

  • 你能在 jsfiddle 中举一个例子吗
【解决方案2】:

,这不可能。

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

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

【讨论】:

  • 我只希望函数等待响应,而不是猜测或作弊。
  • @KennethB。所以答案是不可能的,
猜你喜欢
  • 2023-03-12
  • 2015-08-15
  • 2015-09-06
  • 2015-06-18
  • 1970-01-01
  • 1970-01-01
  • 2021-08-01
  • 1970-01-01
相关资源
最近更新 更多