我在 for 循环中运行 FB.api 时遇到问题。
for(var i = 0; i < commentObjectLength; i++){
var fbFeedID = commentObject.OwnCommentList[i].fbFeedID;
var OwnCommentID = commentObject.OwnCommentList[i].OwnCommentID;
var accessToken = commentObject.OwnCommentList[i].accessToken;
var commentText = commentObject.OwnCommentList[i].commentText;
alert("Hiii"); // >>>>>>>1
FB.api('/' + fbFeedID + '/comments', 'post', {
message: commentText,
access_token : accessToken
}, function (response) {
if (!response || response.error){
//alert(response.error.message);
} else {
alert("Hello"); // >>>>>>>2
alert(response.id); // >>>>>>>3
}
});
}
现在就简单来说一下。
我期待着像这样的警报
1-> 嗨
2-> 你好
3-> 一些响应 ID
4-> 嗨
5-> 你好
6-> 一些响应 id
但实际上我是这样出去的
1-> 嗨
2-> 嗨
3-> 嗨
继续直到循环大小
8-> 你好
9-> 一些响应 ID
10-> 你好
11-> 一些响应 ID 继续
问题是循环的最后日期始终会发送到 Facebook 并在 feed 上发表评论。不是分开的。
所以请任何人帮我解决这个问题。我很挣扎。
(希望每个人都能理解问题,需要任何额外信息请询问)
你需要进一步学习Closures https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Closures它将为您提供解决此问题的正确方法。
闭包为您提供了一种将所有变量值保留在其自己的函数调用中的方法,这就是为什么当 FB.api 将通过响应返回到您的代码时,在调用 FB.api 时所有局部变量将具有相同的值。我相信这会解决您的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)