栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

噩梦有条件的等待()

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

噩梦有条件的等待()

我认为通过现有

cheerio
库并不能很好地工作。参数被序列化(或多或少)以传递给子Electron进程,因此传递整个库可能不起作用。

从好的方面来说,的

fn
一部分
.wait(fn)
在页面上下文中执行-
意味着您可以完全访问
document
它及其拥有的方法(例如
querySelector
)。您也可以访问页面的jQuery上下文(如果存在),或者甚至可以使用
.inject()
它来注入它。

抛开这一点,就

.wait()
(并且
.evaluate()
就此而言)您期望同步方法是正确的,至少直到可以直接在中使用
.evaluate()
诸如promises之类的情况为止。

在此之前,您可以

.action()
用来模仿您想要的行为:

var Nightmare = require('nightmare');Nightmare.action('deferredWait', function(done) {  var attempt = 0;  var self = this;  function doeval() {    self.evaluate_now(function(selector) {      return (document.querySelector(selector) !== null);    }, function(result) {      if (result) {        done(null, true);      } else {        attempt++;        if (attempt < 10) {          setTimeout(doeval, 2000); //This seems iffy.        } else {          done(null, false);        }      }    }, '#elem');  };  doeval();  return this;});var nightmare = Nightmare();nightmare.goto('http://example.com')  .deferredWait()  .then(function(result) {    console.log(result);  });


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/427190.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号