Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在上一个请求挂起时持续发送和接收AJAX响应_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 在上一个请求挂起时持续发送和接收AJAX响应

Javascript 在上一个请求挂起时持续发送和接收AJAX响应,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在Node.js框架中运行一个Python脚本,需要30秒才能完成。在等待脚本完成时,我想在页面上显示进度。脚本生成7个文件,所以我想显示目录中的文件数 首先,我向将运行Python脚本的页面发送一个AJAX请求: var isFinished = false; $.ajax({ url: "/process/xlsx/" + uuid, type: "GET", success: function (data) { if (data.status =

我正在Node.js框架中运行一个Python脚本,需要30秒才能完成。在等待脚本完成时,我想在页面上显示进度。脚本生成7个文件,所以我想显示目录中的文件数

首先,我向将运行Python脚本的页面发送一个AJAX请求:

var isFinished = false;
$.ajax({
    url: "/process/xlsx/" + uuid,
    type: "GET",
    success: function (data) {
        if (data.status == "success") {
            $("#infoText").text("finished");
            isFinished = true;
        } else {
            $("#infoText").text("failed");
        }
    }
});
由于AJAX是异步的,浏览器将在不等待第一个AJAX请求完成的情况下运行下一行,因此我将发送另一个请求,其响应将是目录中的文件数。下面的代码正常工作没有任何问题(当我不发送第一个请求时)


我知道我做错了什么,因为我对AJAX知之甚少。还有什么方法可以解决这个问题吗?

我设法用时间间隔解决了这个问题

var isFinished = false;

// run python script
$.ajax({
    url: "/process/xlsx/" + uuid,
    type: "GET",
    success: function (data) {
        if (data.status == "success") {
            $("#numbersNum").text("finished");
            isFinished = true;
        } else {
            $("#numbersNum").text("failed");
        }
    }
});

var checkDirectory = function () {
    if (isFinished) {
        clearInterval(checkDirectoryInterval);
        return;
    }
    $.ajax({
        url: "/process/" + uuid + "/phase",
        type: "GET",
        success: function (data) {
            if (data.status == "success") {
                var numbersNum = data.numberOfFiles;
                $("#numbersNum").text(numbersNum);
            }
        }
    });
};

var interval = 2000;

var checkDirectoryInterval = setInterval(checkDirectory, interval);

while
循环的目的是什么?您可以发布执行python进程的代码吗?同时,您也遇到了问题,您必须使用interval。。它会更好。@guest271314,我想它是在不断地检查进度。是的,但它会发送很多请求,我认为200毫秒的间隔是可以的。我没有得到什么,错误在哪里。
var isFinished = false;

// run python script
$.ajax({
    url: "/process/xlsx/" + uuid,
    type: "GET",
    success: function (data) {
        if (data.status == "success") {
            $("#numbersNum").text("finished");
            isFinished = true;
        } else {
            $("#numbersNum").text("failed");
        }
    }
});

var checkDirectory = function () {
    if (isFinished) {
        clearInterval(checkDirectoryInterval);
        return;
    }
    $.ajax({
        url: "/process/" + uuid + "/phase",
        type: "GET",
        success: function (data) {
            if (data.status == "success") {
                var numbersNum = data.numberOfFiles;
                $("#numbersNum").text(numbersNum);
            }
        }
    });
};

var interval = 2000;

var checkDirectoryInterval = setInterval(checkDirectory, interval);