Я генерирую некоторую разметку в соответствии с данными, полученными из базы данных.
Затем эта разметка вставляется в раскрывающееся меню ().
Создание этой разметки занимает некоторое время, потому что множество строк объединяются. Пока что в конце этой функции ничего не возвращается, потому что в конечном итоге разметка устанавливается как «побочный эффект» функции через $('#someID').html(data)
.
Теперь важно, чтобы эта функция завершила свою работу до вызова других функций. Поэтому я хотел бы сделать все это внутри обещания, а затем вернуть переменную, содержащую разметку, с помощью «разрешения».
Когда он был возвращен, я хотел бы установить разметку для соответствующего элемента через $('#someID').html(data)
.
Мне просто интересно, разумно ли это делать. Потому что я на самом деле не знаю, может ли из-за какой-то проблемы синхронизации разметка для вставки в элемент select действительно большая. Может ли простая вставка разметки после того, как она уже была создана, занимать значительную часть времени? Должен ли я поэтому обернуть это в какое-то обещание? И если так, как я могу это сделать? Потому что установка разметки для элемента HTML на самом деле ничего не возвращает.
Чтобы проиллюстрировать мое объяснение, вот код, показывающий, к чему я сейчас стремлюсь:
function createMarkup(dataFromDatabase){
return new Promise (resolve => {
var markup = //create the markup according to data from database
resolve(markup)
}
}
async function someStuff(data){
//some code
var markup = await createMarkup(data)
$('#someID').html(markup)
//some code which mustn't run before markup has been created and set to the
//according element
}