我在這里很新,我的后端 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
}```
uj5u.com熱心網友回復:
Promise 總是直接觸發,它們不會等待在 promise.all 中觸發。所以你的問題是你正在向資料庫中的許多請求發送我猜的方式,所以連接池不再接受它要解決這個問題,你可以添加更多的連接池,或者你可以簡單地觸發 Promise Little chunk of 5 并等待諾言.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
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/451949.html
標籤:javascript 节点.js 承诺 续集.js
上一篇:消除”?”從所有錨文本
