Как сделать что бы эта функция выполнялась последовательно?

Доброго времени суток, возникла такая проблема, что когда я прогоняю данную функцию на js, на выполняется не последовательно. Вопрос в том, как можно сделать, что бы она выполнялась последовательно?

$('button[get_data]').click((e) => {

        let date_begin = $('#date_before').val()
        let date_end = $('#date_after').val()

        /*if(date_begin == '' || date_end == '' || date_begin == undefined || date_end == undefined) {
            alert('Выберите диапозон дат')
            return false
        }*/

        /*$(e.currentTarget).prop('disabled', 'disabled')*/

        let users = $('.chooses_users select').val()

        $('.print_data .wrapper-table table tbody').html('')

        users.forEach(user => {
            let user_id = user.split('|')[0]
            let user_name = user.split('|')[1]

            get_data_statistic(user_id, date_begin, date_end).then(res => {
                console.log('true')
            })
        })

        console.log('false')

    })


сейчас получается так, что с начала выводится false, а потом true А нужно что бы вывелись с начала все true, а потом false
  • Вопрос задан
  • 87 просмотров
Пригласить эксперта
Ответы на вопрос 2
@1mb1r
Ответ написан
Комментировать
Pinkierar
@Pinkierar
Люблю побыть один, но хочу быть в кругу друзей (((
Утилитка поможет писать красивый асинхронный код

Async.js
export class Async {
    static async forEach(array = [], callback = (item, index) => Promise.resolve()) {
        for (let i = 0; i < array.length; i++) {
            await callback(array[i], i);
        }
    }

    static async map(array = [], callback = (item, index) => Promise.resolve()) {
        const out = [];
        await Async.forEach(array, async (item, index) => 
            out.push(await callback(item, index)));
        return out;
    }
}


main.js
import {Async} from './Async.js';
$('button[get_data]').click(async (e) => {

    let date_begin = $('#date_before').val();
    let date_end = $('#date_after').val();

    /*if(date_begin == '' || date_end == '' || date_begin == undefined || date_end == undefined) {
        alert('Выберите диапозон дат')
        return false
    }*/

    /*$(e.currentTarget).prop('disabled', 'disabled')*/

    let users = $('.chooses_users select').val();

    $('.print_data .wrapper-table table tbody').html('');

    await Async.forEach(users, async user => {
        let user_id = user.split('|')[0];
        let user_name = user.split('|')[1];

        const res = await get_data_statistic(user_id, date_begin, date_end);
        console.log('true');
    });

    console.log('false');
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 08:04
1 руб./за проект
22 нояб. 2024, в 06:06
1500 руб./в час
22 нояб. 2024, в 06:04
1 руб./за проект