javascript - 回调函数如何访问当前函数作用下的值
本文介绍了javascript - 回调函数如何访问当前函数作用下的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
我在函数中定义了一个数组变量,里面存有6个元素,然后在该函数中调用回调函数,在回调函数中无法访问数组变量的值,但是可以访问length属性。感觉很迷惑,不知道该怎么解决。
for(var i=0;i<bookARR.length;i++){//在该书中写入 有借图书馆id
//因为图书馆表需要所有书籍的_id,所以检测有时,记录id
console.log("在外面"+bookARR[i]);//9787539989891 9787533946777 9787569914078 9787513316286 9787218113180 9787535491978
Book.getBookByISBN(bookARR[i],function(err,book){
if(!book||err){
console.log("huidiao"+bookARR.length);//6
console.log("在里面"+bookARR[i]);//undefined undefined undefined undefined undefined undefined
newBook.push(bookARR[i]);
}else{
newBook_id.push(book._id);
}
ep.emit('examine');
})
}
Book.getBookByISBN()是我在其他模块定义的函数
解决方案
因为
for (var i = 0; i<10; i++) {
setTimeout(function(){console.log(i)});
}
for (var i = 0; i<10; i++) {
(function(i){
setTimeout(function(){console.log(i)});
})(i)
}
所以
for(var i=0;i<bookARR.length;i++){
(function(i) {
Book.getBookByISBN(bookARR[i],function(err,book){
if(!book||err){
console.log("huidiao"+bookARR.length)
console.log("在里面"+bookARR[i]);
newBook.push(bookARR[i]);
}else{
newBook_id.push(book._id);
}
ep.emit('examine');
})
})(i);
}
这篇关于javascript - 回调函数如何访问当前函数作用下的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文