【问题标题】:Inconsistent Variable Value in Node.JsNode.Js 中的变量值不一致
【发布时间】:2017-03-01 16:59:56
【问题描述】:

更新:简化了示例代码

我搜索了这个问题,但无处可寻。我有一个函数,它是simplecrawler 的包装器。以下是简化代码:

const Crawler = require('simplecrawler');

//Initial data is an object with initial.url set to url for crawling     

const startCrawler = function startCrawler() {
      const crawler = new Crawler('http://example.com');
          crawler.start();

    const randomVariable = "set";
  const downloadCondition = crawler.addDownloadCondition((queueItem) => {
      console.log(randomVariable);
  });
};

控制台:

set 
set 
set 
set 
set 
set 
undefined 
set 
set 
undefined 
undefined 
set

问题是在downloadCondition 内部,常量randomVariable 的值对于某些调用未定义,如上所示。 downloadContition 每秒被爬虫实例调用几次。对此有什么解释吗?

【问题讨论】:

  • 你能提供一个Minimal, Complete, Verifiable Example吗?
  • 嗨@qxz,它现在是一个最小的完整示例。只需要作为 npm 包提供的 simplecrawler,然后在函数中使用它就是包装函数正在做的所有事情。我还包括了从另一个页面调用它的简单程度

标签: javascript node.js express asynchronous


【解决方案1】:

这是一个错字。 crawlStarter(initialData) 不是 crawlStarter(initialData)。

由于错字,每次迭代都必须打印 undefined ,您只是不知道,因为您没有在未定义时打印它。

【讨论】:

  • 感谢 Hadas,它只是在示例中,我从主代码重新创建了上述代码。在原始文件中,我在每次迭代中都没有未定义的正确名称和“initialData”,它仅在某些迭代中未定义
  • 帕特里克怎么样?如果你在谈论这个,我导出了这个函数
  • 进一步简化
猜你喜欢
  • 2020-06-10
  • 1970-01-01
  • 1970-01-01
  • 2015-11-03
  • 1970-01-01
  • 2020-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多