Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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 如何组织我的casperjs脚本_Javascript_Phantomjs_Casperjs_Code Organization - Fatal编程技术网

Javascript 如何组织我的casperjs脚本

Javascript 如何组织我的casperjs脚本,javascript,phantomjs,casperjs,code-organization,Javascript,Phantomjs,Casperjs,Code Organization,我当前的脚本如下所示(伪代码): casper.start(一些示例url,函数(){ 数据=JSON.parse(this.getPageContent())的列表 对于(变量i=0;i

我当前的脚本如下所示(伪代码):

casper.start(一些示例url,函数(){
数据=JSON.parse(this.getPageContent())的列表
对于(变量i=0;i

我已经了解了
\uuuutils\uuuuu.sendAJAX
应该放在
中。评估
,然后将其放在
casper中。然后
。然而,在我将代码更改为该表单后,似乎所有的
POST
请求都没有发送出去。有人能给我指一下正确的方向吗?

唯一的限制是
\uuuUtils\uUuUu
仅在页面上下文中定义/注入(在
casper.evaluate
内部)。所以你不能在外面使用它。由于将
false
作为第三个参数传递给
\uuuutils\uuuuu。sendAJAX
使其成为阻塞调用,因此可以在脚本中使用它

for(var i = 0; i < a_list_of_data.length; i++){
    entry = a_list_of_data[i];
    entry_url = entry.get_url();
    result = this.evaluate(function(){
        return __utils__.sendAJAX(entry_url, "POST", {some: "data"}, false, {some: "option"});
    });
    casper.download(result, ...);
}
for(变量i=0;i
请注意,
casper.download
被任意限制为30秒的下载(硬限制)和只有几兆字节的数据。实际上,它在幕后使用了
\uuutils\uuuuu.sendAJAX

如果需要二进制数据,则需要在从页面上下文返回字符串并在casper上下文中解码之前对其进行编码


所有
casper.then*
casper.wait*
函数都会创建一个步骤,该步骤将被添加到步骤队列中并逐个执行。一些函数还创建一些步骤,如
casper.repeat
casper.start
casper.run
等。如果有一个名为
的回调函数,那么
onTimeout
,这是一个步骤


要执行的所有代码都必须至少包含在一个step函数中,否则它将在控制流之外执行。有一些策略可以跟上中断的控制流。但是这里不需要这些。

我不知道您为什么要询问代码组织,因为这是一个很容易解决的小示例。
for(var i = 0; i < a_list_of_data.length; i++){
    entry = a_list_of_data[i];
    entry_url = entry.get_url();
    result = this.evaluate(function(){
        return __utils__.sendAJAX(entry_url, "POST", {some: "data"}, false, {some: "option"});
    });
    casper.download(result, ...);
}