首页 > 代码库 > CasperJS实践笔记(3)
CasperJS实践笔记(3)
CasperJS项目中方法的封装和调用问题,第二个遇到的workflow问题。
在其他代码中有几个方法,比如fun_A,fun_B,fun_C;
现在某个方法调用它们,有一个错误的示范:
casper.then(function(){ this.echo("xxxx"); this.wait(function(){ this.echo("AAAA"); }) this.waitForSelector(‘‘, function(){ fun_a.call(this); fun_b.call(this, str1, str2); fun_c.call(this); }, function(){ }, 100); this.wait(100,function(){ this.echo("BBBB"); })})
这样调用,预期的workflow是:AAAA --> fun_a --> fun_b --> fun_c --> BBBB。
但是实际运行时,发现fun_a、fun_b、fun_c的执行顺序有些意外 ---我们可以认为这是CasperJS的一个bug!
为了避免这个问题,可以这样调用:
casper.then(function(){ this.echo("xxxx"); this.wait(function(){ this.echo("AAAA"); }) this.waitForSelector(‘‘, function(){ this.wait(100, fun_a.bind(this)); this.wait(100, fun_b.bind(this)); this.wait(100, fun_c.bind(this)); }, function(){ }, 100); this.wait(100,function(){ this.echo("BBBB"); })})
当然如果fun_b需要带参数的话,如上一篇文所说,得考虑使用闭包实现方法fun_b。
(网络上很少casperjs的实践,很多东西自己摸索,写法也许不够专业,欢迎批评指正),不胜感激之至!
CasperJS实践笔记(3)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。