Почему не добавились элементы в массив? [дубликат]

92
09 января 2022, 05:10
На этот вопрос уже даны ответы здесь:
Как вернуть значение из события или из функции обратного вызова? Или хотя бы дождаться их окончания (3 ответа)
Закрыт 2 года назад.

Пытаюсь добавить словари с массив itemsElems:

const itemsElems = []
getTable().then(res => {
    res.map( function(elem) { 
        console.log("Elem:", elem);
        itemsElems.push(elem);
    } )
})
console.log("ItemsElems:", itemsElems);

Вот это выводится:

ItemsElems: []
Editor.jsx:19 Elem: {id: 1, idgovernor: 1, inforegion: "!InfoRegion!", idnews: 1}
Editor.jsx:19 Elem: {id: 2, idgovernor: 2, inforegion: "!InfoRegion!", idnews: 1}

Почему список пустой? И почему он вообще первым выводится, если его вывод стоит в конце?

Answer 1

Выводится первым, потому, что функция getTable() возвращает promise. Поэтому JS сначала выполняет код который стоит после него. Чтобы исправить, можно подождать ответа от промиса getTable() через await. То есть:

async function fillArray() {
    const itemsElems = [];    
    let res = await getTable();
    res.map(elem => { 
            console.log("Elem:", elem);
            itemsElems.push(elem);
    });
    console.log("ItemsElems:", itemsElems);
}
READ ALSO
ограничение строки в js

ограничение строки в js

есть скрипт который должен ограничивать строку по кол-во символов и в конце троеточие добавлять, но добавляет только троеточие

119
Ajax подгрузка мобильного меню (hc-offcanvas-nav)

Ajax подгрузка мобильного меню (hc-offcanvas-nav)

Всех приветствую! Как сделать Ajax подгрузку, чтобы при клике по кнопке, меню загружалось, а не загружалось при загрузке сайта? Код добавил на codepen,...

172
Отображение шрифтов Google на canvas

Отображение шрифтов Google на canvas

Имеется приложение, на главной странице канвас с текстомВ приложении есть функционал смены языка (русский, английский)

149
Spring. Rest API. Java

Spring. Rest API. Java

Работа с телефонной книгойПишу серверную часть, хочу созданного пользователя изменить его данные(имя и номер), добавить, удалить, редактировать...

128