Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何将并发承诺限制到特定数量?_Node.js - Fatal编程技术网

Node.js 如何将并发承诺限制到特定数量?

Node.js 如何将并发承诺限制到特定数量?,node.js,Node.js,在我的代码中,执行的承诺是1乘1。它不是并发概念。如何使用limit 8承诺转换为并发。因此,它就像一个创建一个池,并承诺限制8。然后,实时推送和读取承诺输出 例如 如果在1秒内它可以完成2个承诺任务,那么它将输出2个承诺。然后用2份新的承诺工作再次填满人才库 我不希望它等待8承诺工作在同一时间完成,并开始填补池与8工作再次 import fetch from 'node-fetch'; import { load } from 'cheerio'; (async () => {

在我的代码中,执行的承诺是1乘1。它不是并发概念。如何使用limit 8承诺转换为并发。因此,它就像一个创建一个池,并承诺限制8。然后,实时推送和读取承诺输出

例如

如果在1秒内它可以完成2个承诺任务,那么它将输出2个承诺。然后用2份新的承诺工作再次填满人才库

我不希望它等待8承诺工作在同一时间完成,并开始填补池与8工作再次

import fetch from 'node-fetch';
import { load } from 'cheerio';

(async () => {
    const response = await fetch('https://hentairead.com/page/1/');

    const $ = load(await response.text());

    const totalPage = $('span.pages')
                        .text()
                        .match(/\d{3,}/g)
                        .toString();

    for(let page = 1; page <= totalPage; page++)
    {
        const response = await fetch(`https://hentairead.com/page/${page}/`);

        const $ = load(await response.text());

        $('div.item-thumb.c-image-hover > a').each((index, item) => {
            console.log(item.attribs.title);
        });
    }
})();
从“节点获取”导入获取;
从'cheerio'导入{load};
(异步()=>{
const response=等待获取('https://hentairead.com/page/1/');
const$=load(wait response.text());
常量totalPage=$('span.pages')
.text()
.match(/\d{3,}/g)
.toString();
对于(第页=1;第页){
日志(item.attribs.title);
});
}
})();
从“节点提取”导入提取;
从'cheerio'导入{load};
从“c-promise2”导入{CPromise};
(异步()=>{
const response=等待获取('https://hentairead.com/page/1/');
const$=load(wait response.text());
常量totalPage=$('span.pages')
.text()
.match(/\d{3,}/g)
.toString();
const fetchPage=async(page)=>{
const response=等待获取(`https://hentairead.com/page/${page}/`);
const$=load(wait response.text());
$('div.item-thumb.c-image-hover>a')。每个((索引,项)=>{
日志(item.attribs.title);
});
}
等待CPromise.all(函数*(){
对于(第页=1;第页)
import fetch from 'node-fetch';
import { load } from 'cheerio';
import {CPromise} from "c-promise2";

(async () => {
    const response = await fetch('https://hentairead.com/page/1/');

    const $ = load(await response.text());

    const totalPage = $('span.pages')
                        .text()
                        .match(/\d{3,}/g)
                        .toString();

    const fetchPage= async (page)=>{
        const response = await fetch(`https://hentairead.com/page/${page}/`);

        const $ = load(await response.text());

        $('div.item-thumb.c-image-hover > a').each((index, item) => {
            console.log(item.attribs.title);
        });
    }

    await CPromise.all(function*(){
       for(let page = 1; page <= totalPage; page++){
          yield fetchPage(page);
       }
    }, {concurrency: 8});
})();