Задание вызывается первым после завершения задания

Другая неудачная практика может вызвать эту проблему, которая еще не указана.

См. этот фрагмент кода:


Все в порядке, верно?

Что делать, если «a_important_file.php»:



 ----------This is the end of the an_important_file-------------------

Это не сработает? Почему? Потому что уже создана новая строка.

Теперь, хотя это не общий сценарий, что, если вы используете структуру MVC, которая загружает большое количество файлов перед передачей данных на ваш контроллер? Это не необычный сценарий. Будьте готовы к этому.

Из PSR-2 2.2:


  • Все файлы PHP ДОЛЖНЫ использовать Unix LF (linefeed) line ending .
  • Все файлы PHP ДОЛЖНЫ заканчиваться на single blank line.
  • Тег закрытия?> ДОЛЖЕН быть omitted из файлов, содержащих only php

Поверьте, следующие стандарты могут сэкономить вам много часов из вашей жизни:)

0
задан Filip Degenhart 16 January 2019 в 21:12
поделиться

2 ответа

Ну, так как JavaScript асинхронный, цикл не будет ждать запуска запроса монго, поэтому вы должны сначала выполнить запрос монго и внутри его обещания выполнить цикл. Я нахожусь на моем телефоне, так что набирать код немного раздражает, но я почти уверен, что в этом проблема

0
ответ дан israelss 16 January 2019 в 21:12
поделиться

Это должно быть что-то вроде этого:

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 является асинхронным, это означает, что он не будет ждать завершения одной инструкции, прежде чем перейти к следующей, он будет пытаться выполнить их все одновременно, если вы не используете обещания.

0
ответ дан Filip Degenhart 16 January 2019 в 21:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: