0
Facebookのjavascript sdkメソッドを使用していて、奇妙な動作をしていました。facebook javascript sdkメソッド
コードスニペット:
FB.api('/me/friends', function(response) {
friendCount = response.data.length;
for (i=0; i<friendCount; i++) {
friendId = response.data[i].id;
FB.api('/'+friendId, function(response) {
if (response.birthday)
resultList.push(new Array(friendId).concat(response.birthday));
friendCount--;
});
}
});
私は誕生日のフィールドが定義されている友人や彼らの誕生日のIDの2Dアレイを期待していますが、私は右の誕生日を取得していますが、IDが私の中の最後の友人のことをしています友達リスト。 これがなぜ起こっているのでしょうか? FB.api('/'+friendId, ...
が最初に実行されたときFB.api('/'+friendId, ...
ためのコールバック関数がそのコールバック内friendId
の値と呼ばれる
私はこの問題を解決する方法を考えましたが、FB.api( '/' + friendID、...)の前に定義されたfriendIdの値がなぜ変わるのかわかりません。 function .. .. – joovam
最も内側のコールバック関数は 'FB.api( '/ me/friends''と' friendId')のスコープ内にあり、最も内側のコールバック関数が呼び出された時点で 'friendId'の値はあなたの友人リストの最後の友人(私はおそらくこれを非常にうまく説明していないでしょう) – jBit
基本的には、あなたの観点から見ると、 'friendId'の複数のコピーがそれぞれ' FB.api ( '/' + friendId、function(response){...} ' - これは当てはまりません。最も内側のコールバックが呼び出される時刻。 – jBit