使FB.api()调用同步

Kev*_*dra 7 javascript facebook asynchronous synchronous facebook-graph-api

我在FB javascript SDK上创建了fQuery API.到目前为止一切正常,但我现在卡在FB.api电话中.

实际上,我正在尝试使用FB.api函数加载facebook用户对象即"/ me".

function somefunc() {
  var r = fQuery.load(selector);  //selector = "me"
  return r;
}


fQuery.load = function( selector )  {
  fQuery.fn.response = "";

  return FB.api( "/" + selector, function (response) {
    // we get response here.
  });
}
Run Code Online (Sandbox Code Playgroud)

是否可以返回响应,或者我们可以进行同步调用.我已经尝试了很多方法来解决但却无法获得成功.

请提供建议.

Mar*_*sen 8

如果你考虑一下,你真的不想让它同步.Javascript本质上是单线程的,使得异步同步的东西会涉及"冻结"线程,直到异步调用返回.

即使你能做到,你也不想,相信我.

重新设计您的代码以使用异步特性而不是对抗它.您将创建更好的应用程序,拥有更快乐的用户,同时成为更好的编码器.

  • "唉,"我原本以为.我讨厌这样的答案,这些答案没有回答这个问题,只是说,"做得恰当",几乎没有什么指导.但我很高兴我接受了你的建议,它解决了其他一些问题.如果它可以帮助其他任何人,我必须使调用函数也异步,并在操作完成后中断一些要在回调中调用的代码. (6认同)
  • 这不是实际问题的答案.2.需要这样做的一个例子是在处理由于在不同线程中打开窗口而避免弹出窗口阻塞时... (3认同)