Ich habe in der Funktion eine Array-Variable definiert, die 6 Elemente enthält, und dann die Rückruffunktion in der Funktion aufgerufen. Auf den Wert der Array-Variablen kann in der Rückruffunktion nicht zugegriffen werden, aber auf das Längenattribut. Ich bin sehr verwirrt und weiß nicht, wie ich es lösen soll.
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() ist eine Funktion, die ich in anderen Modulen definiert habe
因为
所以
在callback 中带上 bookARR[i]
前面已经说了原因了,其实就是在你定义Book.getBookByISBN()这个函数里面的回调调用的地方传入bookArr[i]就好了,理解一下形参和实参
这是个典型的异步问题,i的作用域还在其中。
因为异步等你
getBookByISBN
方法调用callback的时候i=bookARR.length
。这已经越界了,所以是undefined
.解决方:
1.闭包
2.let