在返回承诺时始终获得ECONNRESET

时间:2017-01-29 10:26:11

标签: javascript node.js

我遇到了这个问题,每当我从ECONNRESET函数返回时,我总是得到then。如果我console.log(d)它会显示已废弃的html数据,但如果我return d;,则会显示ECONNRESET

下面是代码块

function scrapCompanies(countriesLinks) {
    return countriesLinks.map(function (countryLinks) {
        return countryLinks.esomar_links.map(function (link) {
            return Rq(link)
                .then(function (data) {
                    var $ = cheerio.load(data),
                        companies_det = $('h2.mb0');

                    return companies_det.map(function (index,company_det) {
                        //var $ = cheerio.load(company_det);
                        var company_name = $(company_det).find('a').text(),
                            company_esomar_url = $(company_det).find('a').attr('href');

                        return Rq(company_esomar_url)
                            .then(function (web_data) {
                                var $ = cheerio.load(web_data);
                                return {
                                    company_name: company_name,
                                    company_url: $('a[data-ga-category="website"]').attr('href')
                                }
                            })
                            .catch(function (err) {
                                return err;
                            })
                    });
                })
                .catch(function (err) {
                    return err;
                })
        });
        // return countryLinks.esomar_links.map(function (link) {
        //     var linkArr = link.split('/');
        //     var options = {
        //         baseUrl: 'https://'+linkArr[2],
        //         uri: linkArr[3],
        //         timeout: 180000
        //     };
        //     return Rq(options)
        //         .then(function (d) {
        //             return d;
        //         });
        // });

    })
}

这就是承诺呼叫被链接的方式:

var scraper = {
    extract: function (dir) {
        return landingPage(dir)
            .then(function (countries) {
                return Promise.all(navigateAndFetchPages(countries));
            })
            .then(function (countriesLinks) {
                return Promise.all(scrapCompanies(countriesLinks));
            })
            .catch();
    }
};

module.exports = scraper;

我正在使用Request Promise模块。 以下是如何在路线中访问:

app.get('/:directory/extract-email', function (req, res) {
    scraper.extract(req.params.directory).then(function (data) {
        res.send(data);
    });
});

0 个答案:

没有答案