我有一个NodeJS + Phantom项目,我有以下功能:
function isLogged(page) {
var logged = false;
page.evaluate(function() {
return document.querySelector(".login") != null;
}, function(bl) {
console.log("1");
logged = bl;
});
console.log("2");
return logged;
}
但是这个功能会打印" 2"之前" 1"。我该如何解决?
答案 0 :(得分:0)
您正在使用node.js和PhantomJS之间的桥梁。 PhantomJS作为一个单独的进程运行,这意味着每个通信都是异步完成的。您不能return
异步计算的结果。简单的解决方案是使用回调函数:
function isLogged(page, callback) {
page.evaluate(function() {
return !!document.querySelector(".login");
}, callback);
}
并像这样使用它:
isLogged(page, function(res){
console.log(res);
});
这不会return
任何事情。