userId = ['123', '456'];
userName = ['aaa', 'bbb'];
for (var j = 0; j < userId.length; j++) {
Instagram.otherUserMedia(userId[j], function (response) {
$('#otherInfo').append('<h2>' + userName[j] + '</h2>');
for(var i = 0; i < response.data.length; i++) {
$('#otherInfo').append('<img src="' + response.data[i].images.thumbnail.url + '" />');
}
});
}
在此代码段中,我需要显示来自userName
的输出图像的相应response
。但是当我执行此代码时,j
的值会递增到userId.length
,然后进入回调。
因此,当我想显示userName[j]
时,j
表示undefined
是userId
,因为它已遍历userName
中的每个值。
我想为每个userId
的{{1}}提供相应的response
。
答案 0 :(得分:2)
这是与JavaScript Closure相关的问题。
以下演示可能是其中一个解决方案;
userId = ['123', '456'];
userName = ['aaa', 'bbb'];
for (var j = 0; j < userId.length; j++) {
Instagram.otherUserMedia(userId[j], (function(index) {
return function(response) {
$('#otherInfo').append('<h2>' + userName[index] + '</h2>');
for (var i = 0; i < response.data.length; i++) {
$('#otherInfo').append('<img src="' + response.data[i].images.thumbnail.url + '" />');
};
}
}(j)));
}
&#13;
您可能需要查看以下资源:
How do JavaScript closures work?
Closures
Immediately-Invoked Function Expression (IIFE)