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
Sebab
Jadi
Masukkan bookARR[i] dalam panggilan balik
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
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