Задать вопрос
gazes12
@gazes12

Как в дросселе отследить пришедший ответ от сервера в выполняемую функцию?

Здравствуйте!

/*Добавление  комментария*/
const throttle = (func, ms) =>{
    let isThrottle = false;
    count = 5000;

    return function(){
        if(isThrottle){
            return;
        }

        func.apply();
        isThrottle = true;
        
        let cooldown = setInterval(() =>{
            if(isThrottle == true){
                count -= 1000;
                recalls__reminder.addClass('visible');
                recalls__reminder.html(`${count / 1000} сек.`);
                if(count == 0){
                    count = 5000;
                    clearInterval(cooldown);
                }
            }
        }, 1000);

        setTimeout(() =>{
            recalls_results.html(`<div class="recalls__result recalls__result--succ">Отправляйте!</div>`);
            recalls__reminder.removeClass('visible');
            isThrottle = false;
        }, ms);
    }
}

const startThrottle = throttle(addCommentFn, 5000);


function addCommentFn(){
    const create_nameValue = create_name.val();
    const create_surnameValue = create_surname.val();
    const create_recallValue = create_recall.val();

    $.ajax({
        url: '../php/add_recall.php',
        type: 'POST',
        dataType: 'json',
        data: {
            create_nameValue: create_nameValue,
            create_surnameValue: create_surnameValue,
            create_recallValue: create_recallValue
        },

        success: function(result){
            if(result.newRecall){
                $('.recalls').append(`
                    <div class="recall">
                        <div class="recall__people people-recall">
                            <p class="people-recall__fio">${result.newRecall[0].name}</p>
                            <div class="people-recall__status"></div>
                            <div class="recall__buttons">
                                <button class="button-recall__change">Изменить</button>
                                <button class="button-recall__delete" id="${result.newRecall[0].id}">Удалить</button>
                            </div>
                        </div>
                        <div class="recall__text">${result.newRecall[0].recall}</div>
                    </div>
                `);
            }else if(result.error){
                recalls_results.html(`<div class="recalls__result recalls__result--error">${result.error}</div>`);
            }
        }
    });
}

sendButton.click((e) =>{
    e.preventDefault();
    startThrottle();
});


Я хочу чтобы этот код ниже не выполнялся если в success вернулся ответ result.error.
isThrottle = true;
        
        let cooldown = setInterval(() =>{
            if(isThrottle == true){
                count -= 1000;
                recalls__reminder.addClass('visible');
                recalls__reminder.html(`${count / 1000} сек.`);
                if(count == 0){
                    count = 5000;
                    clearInterval(cooldown);
                }
            }
        }, 1000);

        setTimeout(() =>{
            recalls_results.html(`<div class="recalls__result recalls__result--succ">Отправляйте!</div>`);
            recalls__reminder.removeClass('visible');
            isThrottle = false;
        }, ms);
  • Вопрос задан
  • 40 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы