Аргумент setInterval не определен во втором вызове функции - PullRequest
0 голосов
/ 31 мая 2019

Я генерирую файл из API, и мне нужно продолжать делать запрос, пока файл не будет готов, поэтому я использовал setInterval для повторного вызова ajax-вызова, но во втором вызове URL становится неопределенным.

$( "#campaign-list-table form").submit(function(event) {

        event.preventDefault();
        let exportOption = $(this).children("option:selected").val();
        let postUrl = $(this).attr('action');

        setInterval(ajaxd(postUrl), 5000);

    });

    /**
     *
     * @param postUrl
     */
    let ajaxd = function (postUrl) {
        $.ajax({
            method: 'POST',
            url: postUrl,
            contentType: "application/xml",
            complete: function (data) {

                //let $xmlObject = parseXML(data);
                console.log(postUrl);
                    ajaxd();

            }
        });
    }

Я ожидаю, что вывод URL будет 'api / export / 2988475, но второй вывод не определен.

1 Ответ

1 голос
/ 31 мая 2019

Вы не передаете функцию в setInterval, а скорее вызываете функцию ajaxd и передаете ее результат в качестве первого аргумента setInterval.

Оберните ваш звонок в ajaxd в анонимной функции:

setInterval(function () {
    ajaxd(postUrl)
}, 5000);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...