检查文件是否存在时的Ajax settimout

时间:2016-01-25 11:44:42

标签: javascript ajax settimeout

我正在检查文件是否存在。使用1秒的intervall来检查。 我想要的是:如果在10秒后找不到文件,则发出警报。 我试图在intervall中设置timeout,但没有成功。 任何提普都会很棒,提前谢谢。

var isLoading=new Boolean();
isLoading=false;
setInterval(
function(){                      
    $.ajax({
        url: ajaxRequestUrl,
        type: "GET",
        cache: false,                                  
        statusCode: {
            // HTTP-Code "Page not found"
            404: function() {
                if (isLoading===false){
                    do_this();
                }
            },
            // HTTP-Code "Success"
            200: function() {
                if (isLoading===true){
                    do_that();
                }

            }    
        }
    });     
},
1000);

2 个答案:

答案 0 :(得分:1)

我建议使用以下代码:

var isLoading=new Boolean();
isLoading=false;
var isFileFound=false;

$.ajax({
    url: ajaxRequestUrl,
    type: "GET",
    cache: false,                                  
    statusCode: {
        // HTTP-Code "Page not found"
        404: function() {
            if (isLoading===false){
                do_this();
            }
        },
        // HTTP-Code "Success"
        200: function() {
    isFileFound=true;
            if (isLoading===true){
                do_that();
            }

        }    
    }
});     

setTimeout(function(){
alert(isFileFound);
},10000);

答案 1 :(得分:0)

您需要的是在一秒钟后检查的变量。

var isLoading=new Boolean();
isLoading=false;
var tick = 0;
var getFile = setInterval(function(){
    if(tick == 0) {
        $.ajax({
            url: ajaxRequestUrl,
            type: "GET",
            cache: false,                                  
            statusCode: {
                // HTTP-Code "Page not found"
                404: function() {
                    if (isLoading===false){
                        do_this();
                    }
                },
                // HTTP-Code "Success"
                200: function() {
                    if (isLoading===true){
                        do_that();
                    }
                }    
            }
        });
    }
    else if(tick == 10) {
        clearInterval(getFile);
        alert("File not found");
        tick = 0;
    }
    else {
        tick++;
    }
}, 1000);

在区间中我检查tick是否等于0(不是多次发出相同的请求),如果是,我做请求,否则等待。 10秒后显示警告,然后设置勾选为0.在示例中,我还清除了不继续迭代的间隔。通过这种方式,您可以请求新文件。