Rumah > Soal Jawab > teks badan
Saya menentukan pembolehubah tatasusunan dalam fungsi, yang mengandungi 6 elemen, dan kemudian dipanggil fungsi panggil balik dalam fungsi Nilai pembolehubah tatasusunan tidak boleh diakses dalam fungsi panggil balik, tetapi atribut panjang boleh diakses. Saya berasa sangat keliru dan tidak tahu bagaimana untuk menyelesaikannya.
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() ialah fungsi yang saya takrifkan dalam modul lain
伊谢尔伦2017-05-16 13:37:48
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);
}
ringa_lee2017-05-16 13:37:48
Alasannya telah disebut sebelum ini, ia hanya untuk lulus dalam bookArr[i] di mana anda mentakrifkan panggilan balik dalam fungsi Book.getBookByISBN() Fahami parameter formal dan parameter sebenar
漂亮男人2017-05-16 13:37:48
Ini adalah masalah tak segerak biasa, dan skop i masih berada di dalamnya.
Kerana saya menunggu awak secara tidak segerak getBookByISBN
方法调用callback的时候 i=bookARR.length
。这已经越界了,所以是undefined
.
Penyelesaian:
1. Penutupan
2.biarkan