Как правильно использовать promise в цикле?

В общем то в цикле надо сделать несколько запросов на API и получить данные.

let i = 0;
while (i < selectedData.length) { // selectedData.length = 5.
    const selectingSID = selectedData[i].STATUS_ID;
    const cmP = new Promise((resolve, reject) => {
        BX24.callMethod("crm.lead.list", {
            filter: {
                "STATUS_ID": selectingSID
            },
            select: ["STATUS_ID"]
        }, function(result) {
            if (result.error()) console.error(result.error());
            else {
                let resultData = result.data();
                let leadRusName = statusTitles[selectingSID];
                leadsObj[leadRusName] = resultData.length + resultData.length;
                if (result.more()) {
                    result.next();
// Если есть следующая страница данных, то перейти на неё. При выборке одной из selectingSID result.next(); срабатывает три раза
                } else {
                    resolve();
                }
            }
        });
    });
    i++;
}

В общем-то при выборке одной из selectingSID, код срабатывает ещё два раза и BX24.callMethod на этой итерации уходит в конец стека после того как выполнится for.


Ответы (0 шт):