Запрос ajax setTimout() не работает успешно

В коде под строкой

setTimeout(Comet_IrsaliyeBelgeDurum(sGuid, belgeOid), 10000)

не заставляет функцию кометы ждать 10 секунд. Функция работает непрерывно.

Параметр setTimeout, кажется, не имеет никакого эффекта.

Как заставить код ждать 10 секунд?

function Comet_IrsaliyeBelgeDurum(sGuid, belgeOid) {

            var params = {
                sGuid: sGuid,
                belgeOid: belgeOid
            }

            $.ajax({
                type: "post",
                dataType: "json",
                data: params,
                url: '/BetonHareketler/H_BetonIrsaliyeBelgeDurum',
                success: function (data) {

                    if (data.isSuccess) {

                        if (data.entity == 2 || data.entity == 4) {
                            toastr.success(data.SuccessfullMessage, 'İşlemi Başarılı');
                        }
                        else {
                            toastr.info(data.SuccessfullMessage, 'İşlemi Başarılı');
                            setTimeout(Comet_IrsaliyeBelgeDurum(sGuid, belgeOid), 10000);
                        }

                    }
                    else {
                        toastr.error(data.SuccessfullMessage, 'İşlemi Başarısız');
                    }

                },
                error: function (xhr, ajaxOptions, thrownError) {
                    alert("Bağlantı Hatası. Sayfaya Yenileyin");
                    window.location.replace(window.location.href);
                }
            });

        }
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
43
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

setTimeout принимает функцию, которую вызывает по истечении задержки.

setTimeout(Comet_IrsaliyeBelgeDurum(sGuid, belgeOid), 10000);
           ^---------------------------------------^
                      this got evaluated

Ваш код вызывает Comet_IrsaliyeBelgeDurum и использует возвращаемое значение, каким бы оно ни было, в качестве «функции» для setTimeout.

Что вам нужно сделать, так это просто обернуть это в другую функцию, например:

setTimeout(function(){
  Comet_IrsaliyeBelgeDurum(sGuid, belgeOid)
}, 10000);

Большое спасибо за ваше предложение. теперь я знаю о проблеме

sadullah zolfqar 08.07.2019 20:11

Проблема в том, как вы вызываете setTimeout:

setTimeout(Comet_IrsaliyeBelgeDurum(sGuid, belgeOid), 10000);

Javascript — это язык передачи по значению. Это означает, что все параметры, которые вы передаете, оцениваются до того, как они будут переданы функции.

Это означает, что вы передаете значения Comet_IrsaliyeBelgeDurum(sGuid, belgeOid) и 10000 в setTimeout. Затем это вызывает функцию Comet_IrsaliyeBelgeDurum.

Что вы хотите сделать, так это передать функцию (не результат функции) в setTimeout. Смотрите ответ Джозефа для примера.

Другие вопросы по теме