У меня есть цикл for, в котором я перебираю массив объектов. На каждой итерации я добавляю HTML-элементы в строку. Затем я записываю строку на страницу как HTML, когда цикл завершается. ...
2
user44109
5 Апр 2021 в 21:58
1 ответ
Лучший ответ
Рассмотрите возможность создания локальной переменной внутри каждой итерации, на которую может ссылаться .then
:
for (const item of myObject.elements) {
const li = $('<li />').appendTo('body');
getInfoFromDatabase(item.dbID)
.then((result) => {
li.data("databaseDetails", result);
})
// .catch(handleErrors);
}
Заметка
- Ваш текущий код (и код выше) добавляется к
<body>
. Вы, вероятно, захотите вместо этого добавить к<ul>
или<ol>
. - Вам не нужно
JSON.parse
полезную нагрузку, а затемJSON.stringify
ее при настройке данных - эти процессы нейтрализуют друг друга. - Строка, переданная в качестве первого аргумента функции
.data
, не требует префиксаdata-
(это не атрибут данных, он сохраняется во внутреннем устройстве jQuery). Также, вероятно, было бы неплохо поместить сохраненное свойство camelCase для удобства чтения. - Не игнорируйте ошибки - добавьте
.catch
, если возможно. - Возможно, вы захотите заполнить
<li>
сразу, а не один за другим, когда будет возвращаться каждый ответ. Если вы этого хотите, используйте вместо этогоPromise.all
, чтобы дождаться завершения всех ответов, прежде чем вставлять<li>
.
0
CertainPerformance
5 Апр 2021 в 19:04
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.