为什么promise.all crash 报错却不一一发送promise?

Why promise.all crash an error but not sending promises one by one?

我是新来的,我的后端 nodejs 有问题。

我有一个对象列表可以帮助我在数据库中找到一辆车,所以我准备了一个一个地获取数据的承诺,并将其发送到 promise.all 中以触发承诺。

函数 getCar 每次都在处理我发送的数据,但是当我对数组执行 promise.all 时,它会出现连接池错误。问题是什么?

function requestData (listOfCar) {
    const promiseList = [];

    for (let i = 0; i < listOfCar.length; i++) {
        promiseList.push(getCar(listOfCar[i]));
    }

    return Promise.all(promiseList); // crash but sending promises one by one is working
}

function getCar(carFinder) {
    // do things and return a query find in sequelize to find a car 
    // and so it return a promise
}

Promise 总是直接触发,它们不会在 promise.all 内部等待触发。 所以你的问题是你正在向数据库内部的许多请求发送我猜的方式,所以连接池不再接受它 要解决这个问题,您可以添加更多连接池,或者您可以简单地触发 promise little chunk of 5 并等待 promise.all

async function requestData (listOfCar) {
    const carLists = [];

    for (let i = 0; i < listOfCar.length; i++) {
        const tmpListOfPromise = [];
        for (let j = 0; j < 5 && i < listOfCar; j++) {
            const tmpListOfPromise.push(getCar(listOfCar[i]));
            i = i + 1;
        }
        await Promise.all(tmpListOfPromise).then((response) => {
            carLists = carLists.concat(response);  // this will push every response in the list
        });
    }
}

function getCar(carFinder) {
    // do things and return a query find in sequelize to find a car
    // and so it return a promise
}