1

私は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);

Facebook API呼び出しがデータの取得を完了した後に passToMap コールバックが呼び出されることを理解しています。しかし、これらすべての通話がいつ終了したかを判断するにはどうすればよいでしょうか? すべてのポイントのレンダリングをいつ安全に開始できるかを知るために、これを決定する必要があります。ありがとう

4

1 に答える 1

0

各データを変数に保存できるので、3 つの呼び出しが解決されるとすぐにわかります。

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 async flow controls をグーグルで検索してみてください。非同期性を管理するために人々が使用する複数のソリューションが見つかるはずです。

于 2013-10-11T19:48:38.480 に答える