Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.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 有没有办法告诉webbrowser继续编写脚本;卡住了;?_Javascript - Fatal编程技术网

Javascript 有没有办法告诉webbrowser继续编写脚本;卡住了;?

Javascript 有没有办法告诉webbrowser继续编写脚本;卡住了;?,javascript,Javascript,我创建了这个递归脚本,它检查您所在的地址,然后检查另一个文件层次结构中您所在的文件夹是否也存在于该位置。例如,假设您在somerandomsite.com/example/folder/folder1/folder1_1上,然后您可能希望将用户重定向到somerandomsite.com/另一个/example/folder/folder1/folder1_1,如果该文件夹存在,则只需将其重定向到somerandomsite.com/other即可(当然,我也有一些特殊情况,比如folder/f

我创建了这个递归脚本,它检查您所在的地址,然后检查另一个文件层次结构中您所在的文件夹是否也存在于该位置。例如,假设您在somerandomsite.com/example/folder/folder1/folder1_1上,然后您可能希望将用户重定向到somerandomsite.com/另一个/example/folder/folder1/folder1_1,如果该文件夹存在,则只需将其重定向到somerandomsite.com/other即可(当然,我也有一些特殊情况,比如folder/folder1/存在,但folder/folder1/folder1_1不存在,然后重定向到somerandomsite.com/另一个/example/folder/folder1/等

现在我的问题是,我有一个非常慢的递归实现,我说文件夹“示例”中有50个文件夹,文件夹中有100个文件夹,文件夹1中有另一个文件夹,最后100个文件夹是最后一级,然后我的实现需要很长时间来“匹配”所有名称

因此,一些浏览器会显示一条错误消息,“某些脚本已停止工作”,因为它需要很长时间才能执行。因此,我的问题是,是否有某种方法可以告诉浏览器让脚本完成

您可以找到的代码

对于那些想知道我如何执行目录搜索的人来说,我正在创建文件夹的xmlhttprequests,并获得显示所有文件夹的html版本,然后对每个文件夹级别进行简单的模式匹配

一到somerandomsite.com,模式匹配为“示例”

一到somerandomsite.com/example/patternmatch,用于“文件夹”

“folder1”


一个到somerandomsite.com/example/folder/folder1/patternmatch,用于“folder1_1”

否。正如您承认的那样,该功能是专为慢脚本设计的。是否继续,由用户决定。如果有逃生舱口,各种有害脚本都会使用它。

否。该功能是专为慢脚本设计的,正如您承认的那样。由用户决定是否继续。如果有逃生舱,所有有害的脚本都会使用它。

否。研究使用以完成任务。但要注意与旧浏览器的兼容性。

否。研究使用以完成任务。但要注意与旧浏览器的兼容性。

我怀疑AJAX调用会出现这种情况,因为在发出请求时,e不是实际运行的脚本。您确定代码中没有任何无限循环吗

哦,您的代码有问题:

handleXML
是您的事件处理程序,用于
readystatechange
,它调用
checkState,它每秒生成一个超时来调用自己。因此,每次状态更改时,您都会生成另一个重复的checkState。

您不需要checkState来调用自己,因为handleXML已经调用了它,并且每次状态改变时都会调用它。此外,如果返回的状态不是200,checkState将永远调用自己。如果您将checkState函数更改为:

var checkState = function(xmlhttp, callback) {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        callback();
};

我怀疑AJAX调用会出现这种情况,因为在发出请求时没有实际的脚本运行。您确定代码中没有任何无限循环吗

哦,您的代码有问题:

handleXML
是您的事件处理程序,用于
readystatechange
,它调用
checkState,它每秒生成一个超时来调用自己。因此,每次状态更改时,您都会生成另一个重复的checkState。

您不需要checkState来调用自己,因为handleXML已经调用了它,并且每次状态改变时都会调用它。此外,如果返回的状态不是200,checkState将永远调用自己。如果您将checkState函数更改为:

var checkState = function(xmlhttp, callback) {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        callback();
};

上帝啊,在服务器上这样做。你已经“获取目录中目录的httprequest列表”-只需在服务器上完成整个操作。

上帝啊,在服务器上这样做。你已经“获取目录中目录的httprequest列表”-只需在服务器上完成整个操作。

脚本这样做是因为一次发生的事情太多了

等待启动新的xmlhttprequest,直到上一个xmlhttprequest完成


除了使用更快的浏览器外,您不能强制脚本继续运行。

脚本正在这样做,因为一次发生的事情太多了

等待启动新的xmlhttprequest,直到上一个xmlhttprequest完成


除使用更快的浏览器外,您无法强制脚本继续运行。

我没有解决您的问题的方法,但我确实认为您做了一些困难的事情。不幸的是,我不完全理解您的问题,因此无法提出任何具体的建议。我的直觉告诉我,这应该在服务器端处理,否则您将被拒绝你可以为你的目录结构建立一个XML/JSON/Text映射,然后解析它。你不能将你的算法分成几个步骤,并用settimeout将它们链接在一起吗?这样浏览器就有机会时不时地喘息。我没有解决你的问题的办法,但我确实认为你在做一些困难的事情。不幸的是,我没有“我不能完全理解你的问题,所以我不能提出任何具体的建议。我的直觉告诉我,这应该在服务器端处理,或者你应该构建一个目录结构的XML/JSON/Text映射,并对其进行解析。难道你不能将算法分为几个步骤,并用settimeout将它们链接在一起吗?这样,浏览器就可以ser偶尔会有喘息的机会。我如何使用递归脚本来实现这一点?我尝试过“瀑布”模型,但那不是递归