1

我将用我对 Javascript 较新这一事实来提出这个问题,尽管我已经进行了研究,但回调的概念仍然很模糊。我想要做的是从 FB 获取所有签到信息,然后将其发送到谷歌地图,在那里可以绘制所有信息。我很难理解如何使用回调来等待我拥有的 3 个 facebook graph api 调用。

FB.api("me/checkins?fields=place.fields(location,name)&limit=1000", this.passToMap);
FB.api(me/photos?fields=place.fields(location,name)&limit=1000", this.passToMap);
FB.api("me/statuses?fields=place.fields(location,name)&limit=1000", this.passToMap);

我了解在 facebook api 调用完成检索数据后调用 passToMap 回调。但是如何确定所有这些调用何时完成?我需要确定这一点,以便知道何时开始渲染所有点是安全的。谢谢

4

1 回答 1

0

您可以将每个数据块保存在一个变量中,这样您就知道一旦解决了三个调用。

var store = {};

// Implement something similar for each api call
function checkinCb( data ) {
    store.checkins = data;
    this.passToMap( store );
}

// Example flow, update accordingly
function passToMap( data ) {
    // If data is incomplete wait
    if ( !data.checkins || !data.photos || !data.statuses ) return;
}

为了使其更简洁,您还可以将FB.api调用包装在一个外观中,该外观返回您可以链接的承诺。

在所有情况下,尝试使用谷歌搜索JavaScript 异步流控制,它应该会提供人们用来管理异步的多种解决方案。

于 2013-10-11T19:48:38.480 回答