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

Javascript 为什么这个函数没有在Node.JS中首先加载?,javascript,node.js,twitter,bots,Javascript,Node.js,Twitter,Bots,我正在Node.JS中编写一个twitter bot,但我有一个函数,它使用一个名为scrapejs的npm库。它从yahoo finance获取数据,工作正常。问题是,虽然我在botton的代码首先运行后加载了该函数,但不知道为什么。我以前让机器人的推文部分工作过,但如果我从网络抓取数据,我就不能在推文之后运行 代码如下: console.log("The Bot Is Starting To Work."); var sp = require('scrapejs').init({

我正在Node.JS中编写一个twitter bot,但我有一个函数,它使用一个名为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

下面是输出的样子:

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


由于您的第二个功能很繁重,因此运行它需要一些时间,而不仅仅是一个简单的console.log,最后一行将首先结束

为了让您的生活更轻松,您可以使用deasync模块

只需使用:npmi-sdesync安装它
然后,您可以将任何异步函数转换为同步函数。

我现在使用setTimeout函数使其正常工作,在整理完所有其他工作后,我将制定更好的解决方案。谢谢@CorgJR-通常当您希望在其他函数之后发生某些事情时,您会将其放入函数的回调中。超时的问题是,您在那里使用了一些任意的时间-在某些情况下,您将等待太久,而在另一些情况下,时间可能不够