Может ли кто-нибудь помочь мне понять одну вещь в этом node.js коде
let products = productModel.getAll().then(productIds => {
for (let i in productIds ) {
console.log("PROD_ID:"+productIds[i]);
alertModel.fetchAllByProductId(productIds[i]).then(alerts => {
console.log("Alerts for PROD_ID: " + productIds[i]);
console.log(alerts);
});
}
});
Как вы можете видеть здесь, я выбираю все идентификаторы продуктов, затем оповещаю об этих продуктах, в результате в консоли у меня есть
PROD_ID: 1
PROD_ID: 10
PROD_ID: 18
Alerts for PROD_ID: 10
[...alerts data for 10 ]
Alerts for PROD_ID: 18
[...alerts data for 10 ]
Alerts for PROD_ID: 1
[...alerts data for 1 ]
Как вы видите, сначала у меня есть список всех идентификаторов продукта, причина alertModel.fetchAllByProductId - это метод asyn c, и пока первый выбор предупреждения не завершится, система результатов уже завершит l oop по всем идентификаторам продукта, но затем, когда все данные оповещения выбраны в fetchAllByProductId.then , у меня есть правильные productIds [i] , для которых выбрано это оповещение, что очень странно ...
Но, насколько я понимаю, я должен быть уже равен = 3 , и во всех обратных вызовах предупреждений у меня всегда должно быть msg как Предупреждения для PROD_ID: 18 3 раза ???
Насколько я понимаю, i , скажем, 1 переменная, которая содержит 1 слот памяти в node.js env, тогда как возможно, что во всех 3 обратных вызовах оповещения она имеет различное значение ???
Так есть ли сом Где я могу прочитать об этом? или может кто-то помочь и объяснить мне это поведение?