我有一个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;
}
但是这个函数在“1”之前打印“2”。我该如何修复它?
最佳答案
您正在使用 Node.js 和 PhantomJS 之间的桥梁。 PhantomJS 作为一个单独的进程运行,这意味着每次通信都是异步完成的。您无法返回
异步计算的结果。简单的解决方案是使用回调函数:
function isLogged(page, callback) {
page.evaluate(function() {
return !!document.querySelector(".login");
}, callback);
}
并像这样使用它:
isLogged(page, function(res){
console.log(res);
});
这不会返回
任何内容。
关于javascript - Node + PhantomJS | page.evaluate后返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31767075/