我有一个回调函数
function QueryKeyword(keyword, site, callback) {
var querykeyword = keyword;
var website = site;
$.ajax({
url: "http://www.test.com",
jsonp: "jsonp",
dataType: "jsonp",
data: {
Query: querykeyword
},
success: callback
});
}
我用这样的for循环调用这个函数:
for (i = 0; i < questionTerm.length; i++) {
for (j = 0; j < site.length; j++) {
var searchTerm = questionTerm[i] + ' ' + $('#search').val();
QueryKeyword(searchTerm, site[j], function(reslt) {
// I need to get j variable value here
console.log(j);
});
}
}
现在我需要得到&#34; j&#34;函数中的变量值参见我控制j变量值,但它没有得到j变量值。
请您告诉我如何获取此值。
提前致谢
答案 0 :(得分:4)
问题是,在你的回调时,j
被多次重新分配给不同的东西。
您可以选择几种方法。
function QueryKeyword(keyword, site, index, callback) {
// ...
$.ajax(
success: function(result) {
// call the callback with a second param (the index j)
callback(result, index);
}
)
}
QueryKeyword(searchTerm, site[j], j, function(reslt, param) {
// param is j
console.log(result, param);
});
(function() {
var value = j;
...
})();
forEach
questionTerm.forEach((term, i) => {
site.forEach((s, j) => {
// we are in a closure,
// j will be correct here.
QueryKeyword(term, s, function(reslt) {
// j is still correct here
console.log(j);
});
})
});
let
关键字。 Here是一个很好的解释,它在使用for循环时是如何工作的
for(let i = 0; i < 10; i++) {
console.log(i);
setTimeout(function() {
console.log('The number is ' + i);
},1000);
}
答案 1 :(得分:0)
你必须单独传递它:
<强>定义强>
QueryKeyword(searchTerm, site[j], j, function(reslt) {
// I need to get j variable value here
console.log(j);
});
<强>执行强>
@@trancount