我会先问这个问题,因为我是Javascript的新手,尽管我已经做了很多研究,但回调的概念是模糊的。我想做的是从FB获取所有签到信息,然后将其发送到google地图,在那里可以绘制所有信息。我很难理解如何使用回调来等待我拥有的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);我知道passToMap回调是在facebook api调用完成检索数据之后调用的。但是,我如何确定所有这些调用何时结束?我需要确定这一点,这样我才能知道何时开始渲染所有点是安全的。谢谢
发布于 2013-10-12 03:48:38
您可以将每个数据片段保存在一个变量中,这样一旦解决了这三个调用,您就知道了。
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异步流量控制,它应该会提出人们用来管理异步性的多种解决方案。
https://stackoverflow.com/questions/19325953
复制相似问题