Javascript 更改 window.location 和 运行 异步 ajax 获取

Javascript change window.location and run async ajax get

我想用 GET 请求启动一个 ajax 循环来检查我的控制器的状态。循环开始后,我想通过更改 window.location.

开始文件下载

但是我从这段代码中没有得到 console.logs,为什么?

function getExcelIKT() {

        setInterval(function () {
            $.ajax({
                type: 'GET',
                url: getDownloadCSVForIKTStatusUrl,
                dataType: 'json',
                async: 'true',
                success: function (DownloadCSVForIKTStatus) {
                    console.log(DownloadCSVForIKTStatus);
                }
            });
        }, 3000);

        window.location = downloadExcelUrlIKT;

    }
function getExcelIKT() {

    setInterval(function () {
        $.ajax({
            type: 'GET',
            url: getDownloadCSVForIKTStatusUrl,
            dataType: 'json',
            async: 'true',
            success: function (DownloadCSVForIKTStatus) {
                console.log(DownloadCSVForIKTStatus);
                if (false) { //change to some conditions
                    window.location = downloadExcelUrlIKT;
                }
            }
        });
    }, 3000);
}

只需将 if (false) { 更改为 if (DownloadCSVForIKTStatus.success) {

你为什么没看到 console.logs?因为 setInterval$.ajax 函数是异步的。例如

setTimeout(function () {

   console.log(1);

   setTimeout(function () {
       console.log(2);
   },0);

   console.log(3);

},0);

console.log(4);

结果将是 4 1 3 2。 (我使用 setTimeout 而不是 setInterval,即使超时为 0 秒也是异步的)