Загрузка данных


function getMainData(id) {
    return Promise.resolve({
        id: id,
        name: "Max",
        email: "max@mail.ru"
    });
}

function getExtraData() {
    return Promise.resolve({
        age: 20,
        city: "Moscow",
        phone: "123456789"
    });
}

function getHistory() {
    return new Promise((resolve) => {
        setTimeout(() => {
            resolve({
                actions: [
                    { action: "login" },
                    { action: "page_view" },
                    { action: "profile_open" }
                ]
            });
        }, 2000);
    });
}

async function loadUserData(id) {

    const main = await getMainData(id);
    const extra = await getExtraData();
    const history = await getHistory();

    return {
        ...main,
        ...extra,
        ...history
    };
}

loadUserData(1).then(data => {
    console.log(data);
});