如何从扩展的casperjs函数返回值
How to return value from an extended casperjs function?
我正试图从下面的函数中返回一个值,如下所示。
html = casper.get_HTML(myselector);
返回的只是"undefined"(return_html)。但是,"html"变量的设置是正确的。over-all函数工作正常。这只是回报值的问题。
你是怎么做到的?
casper.get_HTML = function(myselector) {
var return_html;
casper.waitForSelector(myselector,
function() {
var html = casper.getHTML(myselector, false);
return_html = html; //got the html
},
function() { // Do this on timeout
return_html = null;
},
10000 // wait 10 secs
);
return return_html;
};
在CasperJS中,所有then*
和wait*
函数都是异步的步进函数。这意味着您不能返回在自定义函数中异步确定的内容。你必须使用回调:
casper.get_HTML = function(myselector, callback) {
this.waitForSelector(myselector,
function then() {
var html = this.getHTML(myselector, false);
callback(html);
},
function onTimeout() {
callback();
},
10000 // wait 10 secs
);
return this; // return this so that you can chain the calls
};
casper.start(url).get_HTML("#myid", function(html){
if (html) {
this.echo("success");
} else {
this.echo("failed");
}
}).run();
相关文章:
- 为什么不't CasperJS'sendAJAX函数为PUT请求发送任何内容
- CasperJS评估函数第二次不工作
- 简化在 CasperJS 中映射多个子元素以仅使用一个函数
- casperJS CSS 选择器:waitFor 函数总是超时
- CasperJS error - undefined 不是函数 (this.waitForUrl)
- 如何将 jQuery find() 函数与 CasperJS 一起使用
- jQuery在CasperJS的evaluate()函数中没有做任何事情
- 如何使用PhantomJS的sendEvent函数在CasperJS中键入数字或小写字母
- 使用 CasperJS 中的函数返回 iframe 中的链接
- CasperJs then() 是否等待上一个函数中发出的事件
- 如何从传递给 CasperJS 中求值的函数调用另一个函数
- 如何使用CasperJS findOne函数与两个或多个选择器
- 如何在满足条件时中断CasperJS的重复函数
- Casperjs:“TypeError: 'undefined' 不是一个函数”,如果在另一个文件中使用了 evalua
- 如何在 casperjs waitForSelector 函数中将参数传递给成功回调
- 如何在CasperJS'评估函数
- 如何调试casperJS中的javascript函数
- CasperJS中evaluate()中的DOM元素缺少click()函数
- 如何从扩展的casperjs函数返回值
- 如何将对象传递给CasperJS函数