gpt4 book ai didi

javascript - 如何顺序/同步进行 API 调用 - EMFILE 错误

转载 作者:行者123 更新时间:2023-12-03 01:19:25 30 4
gpt4 key购买 nike

我正在尝试使用从 GET 请求接收到的数据填充数据库。每个请求返回 500 个项目,进而向数据库发出 500 个 POST。需要发出 686 个 GET 请求。我遇到的问题是在第三次 GET 之后,我开始收到 Error: connect EMFILE 并最终数据库中只有约 1700 个项目。

如何按顺序/同步进行这些 API 调用以避免这种情况?

function getProducts(myUrl) {
axios.get(myUrl, { httpsAgent: agent })
.then(res => {
res.data.products.forEach(product => {
var product = {
'values': {
'2': product.name,
'3': product.display_price,
'4': product.slug
}
};
postProduct(product);
});
})
.catch(err => {
console.log(err);
});
}

function postProduct(product) {
axios.post(huburl, product)
.then(res => {
console.log(res.data);
})
.catch(err => {
console.log(err)
});
}

for (let i = 1; i <= 686; i++) {
var pagedUrl = url + '&page=' + i;
console.log(pagedUrl);
getProducts(pagedUrl);
}

最佳答案

这是一个到 async/await 的简单转换,我说过我会在评论中发布。

async function getProducts(myUrl) {
try {
let res = await axios.get(myUrl, {
httpsAgent: agent
});
res.data.products.forEach(product => {
var product = {
'values': {
'2': product.name,
'3': product.display_price,
'4': product.slug
}
};

await postProduct(product);

});

} catch (e) {
console.log(e);
}
}

async function postProduct(product) {
try {
let res = await axios.post(huburl, product);
console.log(res.data);

} catch (e) {
console.log(e);
}
}

for (let i = 1; i <= 686; i++) {
var pagedUrl = url + '&page=' + i;
console.log(pagedUrl);
await getProducts(pagedUrl);
}

关于javascript - 如何顺序/同步进行 API 调用 - EMFILE 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51828169/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com