javascript - 为什么 Node.JS 中这个函数没有首先加载?

标签 javascript node.js twitter bots

我正在 Node.JS 中编写一个 Twitter 机器人,但我有一个使用名为“scrapejs”的 npm 库的函数,它从 yahoo Finance 获取数据并且工作得很好,问题是虽然我在 botton 的代码首先运行后加载了该函数,但不知道为什么。我之前已经让机器人的推文部分正常工作,但如果我从网络抓取中获取数据,我就无法在推文后运行该部分。

代码如下:

console.log("The Bot Is Starting To Work.");

var sp = require('scrapejs').init({
    cc: 2, // up to 2 concurrent requests
    delay: 5 * 1 // delay .05 seconds before each request
});

sp.load('https://ca.finance.yahoo.com/q?s=CADUSD=X')
    .then(function ($, res) {
        //$.q("//h3[@class='r']/a").forEach(function(node){ //Adding the HTML Tags to filter the data
        console.log("Scraping The Web...");
        $.q("//span[@class='time_rtq_ticker']/span").forEach(function (node) {
            var res = {
                title: node.textContent //Always returns { title: 'NUMBER'} (When Working)
            }
            console.log(res);
            return res;
        })
    })
    .fail(function (err) {
        console.log(err);
    })


console.log("Why does this part load first??"); // This part comes first before the function above

输出如下:/image/zVpTo.jpg

最佳答案

node.js 异步工作,这意味着代码中的行开始一个接一个,每一行在结束时结束 - 第三行不会等待第二行完成后再开始。

由于你的第二个函数很重,所以需要一些时间来运行,比简单的 console.log() 多得多,最后一行将首先结束

关于javascript - 为什么 Node.JS 中这个函数没有首先加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35246494/

相关文章:

Node.js 下载多个文件

php - 如何使用 Hybridauth 获取 Twitter 用户的电子邮件?

javascript - 如何在 CKEDITOR 内联中禁用自动隐藏/显示工具栏

javascript - enablejsapi 作为 iframe 元素的属性

javascript - angularjs 嵌套路由不加载布局

node.js - 如何使用 Jade 迭代数组创建 html 表

Javascript - 十六进制字符串到十进制字符串

javascript - 为 websocket 引入中间件代理时响应热重载中断

安卓 : can i attach picture when i tweet via native Twitter app

r - 抓取 Twitter 数据 : API Failed (Error 403)