使用嵌套的open()函数时,何时退出
When to exit when using nested open() functions?
我在使用PhantomJS时遇到了一些问题。我指的是这篇文章。我尝试嵌套open()
函数,但没有得到我想要的结果,即打开所有4个URL并打印所有4个console.log
s。
代码:
var page = require('webpage').create(); //新建一个页面
url1 = "-----";
url2 = "-----";
url3 = "-----";
url4 = "http://-----/";
page.open(url1, function(status) { //导航到第一个URL
console.log('111111111111');
if (status == "fail") phantom.exit(); //如果发生错误,退出程序
page.open(url2, function(status) { //否则在页面加载完成的回调函数中继续导航到第二个URL,依次类推
console.log('22222222222222');
if (status == "fail") phantom.exit();
page.open(url3, function(status) {
console.log('3333333333333333');
if (status == "fail") phantom.exit();
page.open(url4, function(status) {
console.log('444444444444444');
if (status == "fail") phantom.exit();
});
});
});
console.log('close');
phantom.exit();
});
结果:
$ phantomjs test.js
111111111111
close
当你执行完它时,你必须exit
PhantomJS,而且似乎你在open
url4
:之后就完成了
page.open(url1, function(status) {
console.log('111111111111');
if (status == "fail") phantom.exit();
page.open(url2, function(status) {
console.log('22222222222222');
if (status == "fail") phantom.exit();
page.open(url3, function(status) {
console.log('3333333333333333');
if (status == "fail") phantom.exit();
page.open(url4, function(status) {
console.log('444444444444444');
if (status == "fail") phantom.exit();
console.log('close');
phantom.exit();
});
});
});
});
PhantomJS是异步的,正如Nicolas在他的博客中所说。你离开得太早了。
相关文章:
- 何时更喜欢javascript中的匿名函数
- 如何动态地决定并告诉d3.json()函数何时使用哪个json
- 检测数组的所有函数何时返回:javascript
- 何时返回jQuery函数,而不是仅仅调用它
- 如何知道函数何时完成
- 在 Node.js 中何时使用同步函数是否有约定
- 检测何时从控制台调用函数的最佳方法
- 何时使用自包含函数(闭包),何时不使用自包含函数
- 何时有时将对象类型定义为将实例绑定方法镜像为构造函数上的静态实用程序函数很有用
- 何时使用自动函数执行
- 如何判断多个函数何时完成 jQuery 延迟
- 在执行某些 ajax 操作时,此匿名回调函数何时运行
- 如何知道异步函数何时结束
- javascript settimeout或setinterval函数何时停止
- Scala函数何时执行
- 我如何知道最后一个异步函数何时在ob" for键中返回结果?循环
- Javascript函数何时执行?PHP变量不会改变传入的参数
- 检查函数何时完成所有xml的读取
- 使用setTimeout注册的函数何时调用
- 确定递归函数何时完成