Другая неудачная практика может вызвать эту проблему, которая еще не указана.
См. этот фрагмент кода:
Все в порядке, верно?
Что делать, если «a_important_file.php»:
----------This is the end of the an_important_file-------------------
Это не сработает? Почему? Потому что уже создана новая строка.
Теперь, хотя это не общий сценарий, что, если вы используете структуру MVC, которая загружает большое количество файлов перед передачей данных на ваш контроллер? Это не необычный сценарий. Будьте готовы к этому.
Из PSR-2 2.2:
Unix LF (linefeed) line ending
. single blank line
. omitted
из файлов, содержащих only php
Поверьте, следующие стандарты могут сэкономить вам много часов из вашей жизни:)
Ну, так как JavaScript асинхронный, цикл не будет ждать запуска запроса монго, поэтому вы должны сначала выполнить запрос монго и внутри его обещания выполнить цикл. Я нахожусь на моем телефоне, так что набирать код немного раздражает, но я почти уверен, что в этом проблема
Это должно быть что-то вроде этого:
db.collection("users").doc(el).collection("grades").get().then(function(querySnapshot) {
querySnapshot.forEach(function(doc) {
console.log(doc.id, " => ", doc.data());
const data = doc.data();
members.forEach(el => {
console.log(el)
table_number++;
console.log("forEachMember" + table_number);
const html = populateTable("member_name" + table_number, "layout_table" + table_number);
document.getElementById("main_padding").insertAdjacentHTML('beforeend', html);
addToTable("grade_table" + table_number, doc.id, data.mdl, data.klu);
})
});
});
Дело в том, что сначала нужно выполнить наиболее трудоемкую задачу, в данном случае запрос базы данных, а затем сделать все остальное. Поскольку Javascript является асинхронным, это означает, что он не будет ждать завершения одной инструкции, прежде чем перейти к следующей, он будет пытаться выполнить их все одновременно, если вы не используете обещания.