首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无铬-在执行指令之前等待

无铬-在执行指令之前等待
EN

Stack Overflow用户
提问于 2018-01-12 03:42:26
回答 2查看 502关注 0票数 6

我使用无浏览器检索网站上的一段信息并加载相应的文件:

代码语言:javascript
复制
async function run() {
  const chromeless = new Chromeless()

      const screenshot = await chromeless
        .goto('http://www.website.com')
         title = await chromeless.inputValue('input[name="title"]')

         var fs = require('fs');
         var data = fs.readFileSync(title,"utf8");
         ...
    await chromeless.end()
}

但是,当我启动脚本时,文件读取指令就会立即执行,而不是等待web爬行完成。

在javascript中,我认为我需要使用回调函数来防止这种情况发生,但是是否有更好的方法来使用无浏览器呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-03 13:46:15

您可以尝试将implicitWait: true传递给Chromeless构造函数。默认情况下,此值为false。将其设置为true将使元素在执行命令之前等待存在。

换句话说,在分配var fs = require('fs');之前,不应该执行const title

代码语言:javascript
复制
async function run() {
  const chromeless = new Chromeless({implicitWait: true})
  const screenshot = await chromeless.goto('http://www.website.com')
  const title = await chromeless.inputValue('input[name="title"]')

  var fs = require('fs');
  var data = fs.readFileSync(title,"utf8");
  ...
  await chromeless.end()
}
票数 3
EN

Stack Overflow用户

发布于 2018-01-13 20:54:59

我,您正在尝试在某个时间或事件上执行代码,那么回调是实现此操作的首选方法。但是JS是一种异步语言。老实说,我并不经常使用它,但似乎您可以只进行任何类型的异步调用,您就不会再被代码阻止了。只需从运行阻塞线的作业中分离出一个函数,它就应该在当前进程的旁边运行。可能添加一个sleep以确保它不会阻止您的其他代码运行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48219238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档