我有个密码:
var page = require('webpage').create();
page.open('http://phantomjs.org', function (status) {
console.log('before IF');
if (status !== 'success') {
console.log('FAIL to load the address');
phantom.exit();
}
console.log('LOADED');
phantom.exit();
});
console.log(function(){
return 'Im in function1';
}());
console.log(function(){
return 'Im in function2';
}());
console.log(function(){
return 'Im in function3';
}());当我运行它时,我得到了下一个输出:
Im in function
Im in function1
Im in function2
Im in function3
before IF
LOADED为什么会发生这种事?我调用exit()函数,它应该关闭脚本(或者我缺少smth了吗?)这是官方的phantomJS文档:
使用指定的返回值退出程序。如果未指定返回值,则将其设置为0。
我会感谢你的帮助。
发布于 2017-05-13 14:42:51
我叫page.open(.)phantomJS 加载页面,同时继续执行脚本中的下一个函数。
不,它不会一次载入一页。它将向事件循环添加打开页面的任务。然后继续解析和执行脚本。只有在当前脚本结束并完成当前调用堆栈中的所有函数之后,JS才开始处理事件循环中的任务。因此,它在那里找到打开页面的任务并打开页面。此时,您的所有console.log语句都已执行。
打开页面后,它会添加要循环的任务,以运行传递到page.open()的回调。
https://stackoverflow.com/questions/43954100
复制相似问题