NodeJS Callback

NodeJS Callback

本文关键字:Callback NodeJS      更新时间:2024-05-08

我一直在学习一系列关于如何在Node JS 中进行一些web抓取的教程

(我是个十足的傻瓜,所以对一件事的任何见解,无论多么基本,都会有所帮助)

我一直在试图找到一种将数组"url"保存到文本文件的方法,但遇到了几个问题——这是异步的,因为链接收集需要时间,而且我无法真正理解回调在Node中是如何工作的。

到目前为止,我拥有的是:

var request = require('request');
var cheerio = require('cheerio');
var links = [];
request('http://www.reddit.com', function(err, resp, body){
    if(!err && resp.statusCode == 200){
        var $ = cheerio.load(body);
        $('a.title', '#siteTable').each(function(){
            var url = $(this).attr('href');
            urls.push(url);
        });
        console.log(links);
    }
});

我想简单地将整个"部分"暂停,这样可以给它足够的时间来编译链接列表,但我想看看什么是更干净、更正确的方法。

有人能告诉我如何使用回调,这样我就可以设置一个打印函数来保存输出吗?

除了一个错误,一切看起来都很好。你没有声明一个名为urls的数组,但你正在向它推进。只需将urls.push(url);更改为links.push(url);,就可以获得

var request = require('request');
var cheerio = require('cheerio');
var links = [];
request('http://www.reddit.com', function(err, resp, body){
    if(!err && resp.statusCode == 200){
        var $ = cheerio.load(body);
        $('a.title', '#siteTable').each(function(){
            var url = $(this).attr('href');
            links.push(url);
        });
        console.log(links);
    }
});