在继续使用Javascript之前,如何等待多个facebook图api调用?

时间:2013-10-11 19:38:59

标签: javascript facebook-graph-api callback

我将在前言中提出这样一个问题,即我是Javascript的新手,尽管我已经做过研究,但回调的想法仍然很模糊。我想要做的是从FB获取所有签到信息,然后将其发送到谷歌地图,在那里可以全部绘制。我很难理解如何使用回调来等待我拥有的3个facebook图形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回调。但是如何确定所有这些调用何时完成?我需要确定这一点,所以我知道什么时候开始渲染所有点是安全的。感谢

1 个答案:

答案 0 :(得分: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调用包装在一个正在返回可以链接的承诺的外观中。

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