最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

如何处理大量与承诺所有的请求

IT培训 admin 6浏览 0评论

如何处理大量与承诺所有的请求

我对5000的链接和我需要抓取所有。因此,进出口难怪有没有比这更好的办法。这里是我的代码。

let urls = [ 5000 urls go here ];

const doms = await getDoms(urls);

// processing and storing the doms

getDoms = (urls) => {

  let data = await Promise.all(urls.map(url => {
    return getSiteCrawlPromise(url)
  }));
  return data;

}

getSiteCrawlPromise = (url) => {

  return new Promise((resolve, reject) => {
    let j = request.jar();
    request.get({url: url, jar: j}, function(err, response, body) {
        if(err)
          return resolve({ body: null, jar: j, error: err});
        return resolve({body: body, jar: j, error: null});
    });
  })

} 

有没有在承诺实现,因此它可以devide的作业多线程和进程的机制。然后返回输出作为一个整体?我不想devide的URL成较小的碎片和处理这些片段

回答如下:

无极对象表示最终完成(或失败)的异步操作的,其结果值。

有没有内置机制的承诺,以“分工作到多线程和进程”。如果你一定要做到这一点,你必须分段的URL数组成更小的阵列,同时排队零散的阵列到单独的履带式实例。

但是,也绝对没有必要走那条路,因为你正在使用节点JS和节点履带,您可以使用节点履带式的maxConnections选项。这是它是专为与最终的结果将是相同的。你会爬在多线程的网址,而不会浪费时间和精力手工分块和处理多个履带实例,或根据任何并发库。

如何处理大量与承诺所有的请求

我对5000的链接和我需要抓取所有。因此,进出口难怪有没有比这更好的办法。这里是我的代码。

let urls = [ 5000 urls go here ];

const doms = await getDoms(urls);

// processing and storing the doms

getDoms = (urls) => {

  let data = await Promise.all(urls.map(url => {
    return getSiteCrawlPromise(url)
  }));
  return data;

}

getSiteCrawlPromise = (url) => {

  return new Promise((resolve, reject) => {
    let j = request.jar();
    request.get({url: url, jar: j}, function(err, response, body) {
        if(err)
          return resolve({ body: null, jar: j, error: err});
        return resolve({body: body, jar: j, error: null});
    });
  })

} 

有没有在承诺实现,因此它可以devide的作业多线程和进程的机制。然后返回输出作为一个整体?我不想devide的URL成较小的碎片和处理这些片段

回答如下:

无极对象表示最终完成(或失败)的异步操作的,其结果值。

有没有内置机制的承诺,以“分工作到多线程和进程”。如果你一定要做到这一点,你必须分段的URL数组成更小的阵列,同时排队零散的阵列到单独的履带式实例。

但是,也绝对没有必要走那条路,因为你正在使用节点JS和节点履带,您可以使用节点履带式的maxConnections选项。这是它是专为与最终的结果将是相同的。你会爬在多线程的网址,而不会浪费时间和精力手工分块和处理多个履带实例,或根据任何并发库。

发布评论

评论列表 (0)

  1. 暂无评论