我将在前言中提出这样一个问题,即我是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回调。但是如何确定所有这些调用何时完成?我需要确定这一点,所以我知道什么时候开始渲染所有点是安全的。感谢
答案 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异步流控制,它应该提供人们用来管理异步性的多种解决方案。