English 中文(简体)
以无同步的呼声呼叫Facebook Api 失去范围
原标题:Losing scope in an asynchronous call to facebook api
for (var i = 0; i < friends.length; i++) {
    var friend = $("<li>" + friends[i].name + "</li>");
    FB.api( /  + eventId +  /invited/  + friends[i].id,  post , {}, function (response) {
        //friend here is the last one created for all callbacks
    });
}

我有一个循环,邀请朋友参加一个活动, 我发现在这里创建的jquery < code> friend 对象总是最后一个为所有回调创建的对象。 我假设这是因为Facebook的呼叫是无同步的。 我怎样才能在这里保持范围?

最佳回答

尝试此 :

for (var i = 0; i < friends.length; i++) {
    var friend = $("<li>" + friends[i].name + "</li>");
    var callback = (function(friend){
       return function (response) {
          //friend here should be the correct one
       })(friend);
    }
    FB.api( /  + eventId +  /invited/  + friends[i].id,  post , {}, callback);
}
问题回答

您可以为本地变量创建关闭 :

for (var i = 0; i < friends.length; i++) {
  var friend = $("<li>" + friends[i].name + "</li>");

  (function(friend){

    FB.api( /  + eventId +  /invited/  + friends[i].id,  post , {}, function (response) {
      //friend here is the parameter in the closure, so it s preserved for each item
    });

  })(friend);

}




相关问题
selected text in iframe

How to get a selected text inside a iframe. I my page i m having a iframe which is editable true. So how can i get the selected text in that iframe.

How to fire event handlers on the link using javascript

I would like to click a link in my page using javascript. I would like to Fire event handlers on the link without navigating. How can this be done? This has to work both in firefox and Internet ...

How to Add script codes before the </body> tag ASP.NET

Heres the problem, In Masterpage, the google analytics code were pasted before the end of body tag. In ASPX page, I need to generate a script (google addItem tracker) using codebehind ClientScript ...

Clipboard access using Javascript - sans Flash?

Is there a reliable way to access the client machine s clipboard using Javascript? I continue to run into permissions issues when attempting to do this. How does Google Docs do this? Do they use ...

javascript debugging question

I have a large javascript which I didn t write but I need to use it and I m slowely going trough it trying to figure out what does it do and how, I m using alert to print out what it does but now I ...

Parsing date like twitter

I ve made a little forum and I want parse the date on newest posts like twitter, you know "posted 40 minutes ago ","posted 1 hour ago"... What s the best way ? Thanx.

热门标签