gpt4 book ai didi

javascript - 异步事件后的数组顺序

转载 作者:行者123 更新时间:2023-11-30 15:43:40 32 4
gpt4 key购买 nike

我有以下一段代码,它点击一个 API 来上传一组图像并在一个数组中返回它们的链接;但是,不遵守图像的上传顺序。

if (req.files) {

var uploadedImages = [];

for (var i = 0; i < req.files.length; i++) {
imgur.uploadFile(req.files[i].path)
.then(function (json) {
uploadedImages.push(json.data.link);
if (uploadedImages.length === req.files.length) {
console.log(uploadedImages);
//Further processing
}
})
.catch(function (err) {
console.log("Imgur API Error!");
console.log(err.message);
res.redirect('/participants?err=' + encodeURIComponent('An unknown error occured. Please try again.'));
});
}

例如,如果我上传 1.jpg、2.jpg 和 3.jpg,保存这些图片各自链接的数组不一定按相同的顺序排列。确保订单在此异步事件期间不受影响的最佳方法是什么?

最佳答案

使用 Promise.all 将 promise 数组转换为数组的 promise:

var uploads = req.files.map(function (file) {
return imgur.uploadFile(file.path)
.then(function (json) {
return json.data.link;
});
});

Promise.all(uploads)
.then(function (uploadedImages) {
console.log(uploadedImages);
// Further processing
})
.catch(function (err) {
console.log("Imgur API Error!");
console.log(err.message);
res.redirect('/participants?err=' + encodeURIComponent('An unknown error occured. Please try again.'));
});

关于javascript - 异步事件后的数组顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40419545/

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