gpt4 book ai didi

javascript - 在回调上运行循环,node js

转载 作者:行者123 更新时间:2023-12-03 09:56:46 24 4
gpt4 key购买 nike

我需要调整一些图像的大小。问题是我正在使用的库每次回调都会调整一次大小。

我想调整多个图像的大小,因此将其放入循环中:

exports.resizeImages = function (req, res) {
var images = fs.readdirSync('uploads/');

for (var n = 0; n < files.length; n++) {
var tgt = 'uploads/resized/' + images[n];

gm(tgt).resize(150).write(tgt, function (err) {
if (err) {
console.log('resizing failed');
res.status(400).send('failed to resize');
return;
}
if (n == images.length) {

res.status(200).send();
}
});
}
}

我知道我不能这样做。我需要让循环等待,直到回调以某种方式响应。我看过一些例子,但我无法让它发挥作用。

有什么想法吗?

最佳答案

您还可以使用node async模块

类似这样的事情:

var async = require('async');

exports.resizeImages = function (req, res) {
var images = fs.readdirSync('uploads/');

async.each(images, function(file, callback) {
var tgt = 'uploads/resized/' + file;
gm(tgt).resize(150).write(tgt, callback);
}, function(err) {
if(err) {
console.log('resizing failed');
return res.status(400).send('failed to resize');
} else {
//no error
return res.status(200).send();
}
});
}

关于javascript - 在回调上运行循环,node js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30713041/

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