如何在PhantomJS中处理XMLHttpRequest异常101错误?

时间:2017-03-02 02:08:34

标签: javascript shell error-handling xmlhttprequest phantomjs

我是JavaScript的新手,也是PhantomJS的新手。当我使用命令for运行myfile.js(bears phantomjs myfile.js循环)时,它偶尔(但肯定会)发出

NETWORK_ERR: XMLHttpRequest Exception 101: A network error occurred in synchronous requests.

每次发生此错误时,我都必须终止此过程(在终端中使用Ctrl + C),然后使用下面的bash命令继续我的工作

$ some bash command to clean the job done before error occurs
$ phantomjs myfile.js

这真的令人沮丧,尤其是我有一个很大的for循环。所以,我想知道是否有某种方法可以在它发出

时自动执行这些行
NETWORK_ERR: XMLHttpRequest Exception 101 

在我粗略的想法中,我可能在myfile.js中有一些错误处理代码,或者在shell脚本文件中嵌入phantomjs myfile.js并捕获它发生的错误。

有人可以教我怎么做吗?

这是我的主要PhantomJS代码:

    // myfile.js
    var request = new XMLHttpRequest();
    var myURLs = ["url1","url2", ... ]; // this array contains more than 10k URLs
    for (i=0; i<myURLs.length; i++) {
      request.open('GET', myURLs[i], false); // synchronous request
      request.setRequestHeader("HEADERKEY","HEADERVALUE");
      request.send();
      if (request.status === 200) {
        console.log(request.responseText);
      } else {
        console.log("Error Code: " + request.status);
        phantom.exit();
      }
    }
    phantom.exit();

出于私人原因,我无法在myURLs数组中共享网址。非常抱歉,但如果你从我的代码中得到一些想法,我仍然会寻求帮助。

1 个答案:

答案 0 :(得分:0)

叹了口气,我得在这里回答我自己的问题。

PhantomJS提供了一个名为onError的全局错误处理程序。当phantomjs抛出错误时,它非常有用。

您可以在此处找到详细信息:http://phantomjs.org/api/phantom/handler/on-error.html