【发布时间】:2017-08-17 20:31:43
【问题描述】:
我正在使用 Jimp 来处理一些照片。
我有一个带有照片的数组。像这样:
var images = ['.../pic-1.jpg', '.../pic-2.jpg', '.../pic-3.jpg', '.../pic-4.jpg'];
这是操作它们的代码:
images.forEach(function(image){
jimp.read(image, function(err, img){
img.quality(90, function(){
console.log("done with this image!");
});
});
});
这很好用,它会在每个图像完成时记录下来。但是,它会阻止代码,如果我尝试这样做:
var processed = 0;
images.forEach(function(image){
jimp.read(image, function(err, img){
img.quality(90, function(){
processed++;
document.querySelector('p').textContent = 'processed images: ' + processed;
});
});
});
在处理完所有图像之前,它不会更新文本。我该如何解决这个问题,以便在每次处理图像时更新文本?
【问题讨论】:
-
超时工作。这将确保它发生在下一个事件中。
-
我不明白对不起,怎么回事?
-
我在这段代码中没有看到任何阻塞。在 forEach 内部,所有调用似乎都是异步的。
-
@Ananth 我知道,这就是为什么我不知道是什么原因造成的,我正在尝试调试它但没有任何效果
-
.quality()似乎唯一能做的就是set an instance property。
标签: javascript node.js