首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >节点-metainspetor在Node.js中未执行

节点-metainspetor在Node.js中未执行
EN

Stack Overflow用户
提问于 2017-05-07 09:22:12
回答 1查看 44关注 0票数 0

我在Node.js中有一个简单的web抓取脚本,我试图在一个循环中运行:

代码语言:javascript
复制
var insp = require('node-metainspector');
var client = new insp("http://www.google.com", { timeout: 99999 });
var sleep = require("thread-sleep");

client.on("fetch", function(){
    console.log("The title is:");
    console.log(client.title);
});

client.on("error", function(err) {
    console.log(err);
});

while(true) {
    console.log("Checking...");
    client.fetch();
    sleep(10000);
}

当我在循环之外运行client.fetch()时,它运行得非常好,但是只要它在循环中,它就不能工作。没有抛出错误(我检查过了试图捕获)。循环中的其余行执行。为什么会发生这种事,我该怎么解决呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-07 14:43:08

thread-sleep模块使用同步API (child_process.execFileSync())来“睡眠”,这不是Node.js中推荐的方法。使用异步API来实现您想要的更合适。在您的例子中,一个简单的setInterval可以完成以下工作:

代码语言:javascript
复制
var insp = require('node-metainspector');
var client = new insp("http://www.google.com", { timeout: 99999 });

client.on("fetch", function(){
  console.log("The title is:");
  console.log(client.title);
});

client.on("error", function(err) {
  console.log(err);
});

setInterval(function() {
  console.log("Checking...");
  client.fetch();
}, 10000);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43829855

复制
相关文章

相似问题

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