Дмитрий Белов

Дмитрий Белов

С нами с 21 февраля 2021; Место в рейтинге пользователей: #4306
Дмитрий Белов
21 февраля 2021, 00:45
0
Решил оставить вариант через промисы:
/**
 * Добавить список товаров в корзину
 * @param products список товаров в формате {id: 1, count: 2, options: []}
 */
function addToCartAll(products) {
    var addToCartOne = function(id, count, options) {
        return function() {
            return new Promise(function(resolve, reject) {
                $.post(document.location.href, {
                    ms2_action: 'cart/add', 
                    id: id, 
                    count: count, 
                    options: options
                }, function(response) {
                    console.log(JSON.parse(response));
                    resolve();
                });
            });
        }
    }
    var promise = Promise.resolve();
    for (var product of products) {
        promise = promise.then(addToCartOne(product.id, product.count, product.options));
    }
    promise.then(function() {
        console.log("Все запросы выполнены последовательно");
    });
}