async.mapLimit 用于发出多个请求

async.mapLimit usage to make multiple requests

我有这样一行:

async.mapLimit(urls, 10, getCertificatesFromPage, callback)

其中 urls 是一个包含 url 的数组,getCertificatesFromPage :

getCertificatesFromPage = (url, callback) ->
  request url, (err, res, html) ->
    $ = cheerio.load(html)
    allRows = $('div.search-result-shop')

    objCollector = []

    allRows.each () ->
      links = $(this).find('a')

      obj =
        companyName: $(this).find('.companyname').text()
        pageDetailsUrl: ''
        link: ''

      for link in links
        extractedLink = link.attribs.href
        if extractedLink.includes('http')
          obj.link = extractedLink
        else
          obj.pageDetailsUrl = nameSpace.pageName + extractedLink
      objCollector.push obj
    return objCollector

这不是很好,因为我需要从每页 10 x 10 页收集所有对象,但我只收到 50 * 10 个链接还有更多

我如何使用此代码使其工作?

getCertificatesFromPage = (url, callback) ->

您没有在 getCertificatesFromPage 函数中调用 callback。否则,框架无法知道工作何时完成。