javascript - 同步使用 ImageMagic
问题描述
尝试使用imagemagick
需要同步使用imagemagick。
即只有在图像转换完成后才执行下一个代码(无论是错误还是成功)
我只看到一个带有deasync的解决方案:
const ImageMagick = require('imagemagick');
const Deasync = require('deasync');
var finished = false;
ImageMagick.convert(
[
source,
path_to
],
function(err, stdout){
finished = true;
});
Deasync.loopWhile(function(){return !finished;});
// the next code performed only after image convertion will be done
是否有任何变体如何同步使用 imagemagick?
解决方案
Node.js 是单线程的,所以你应该尽量避免使这样的函数同步。您可能只需在回调函数中执行您的代码。
const ImageMagick = require('imagemagick');
ImageMagick.convert(
[
source,
path_to
],
function(err, stdout){
// the next code performed only after image convertion will be done
});
或者你可以使用 Promise 和 await,但是你的整个函数将是异步的
const ImageMagic = require('imagemagick');
function convertImage(source, path_to){
return new Promise((resolve, reject) => {
ImageMagick.convert(
[
source,
path_to
],
function(err, stdout){
if(err) {
reject(err)
}
resolve(stdout);
});
})
}
async function doStuff(){
// start the image convert
let stdout = await convertImage(source, path_to);
// now the function will go on when the promise from convert image is resolved
// the next code performed only after image convertion will be done
}
推荐阅读
- django - 如何使用 django rest 框架为不同的用户设置不同的节流范围?
- python-3.x - 如何将熊猫数据框作为一个系列?
- php - PHP 源路径
- android - 量角器代码在 android 手机上运行良好,但在报告中显示为失败
- javascript - 在html表的另一行中复制特定行
- excel - Excel IF 语句过滤数字和字母
- django - 过滤已由函数填充的自定义 Django 字段
- javascript - 如何使用 javascript 下载一组带有元素的文件?
- excel - HLookup - 运行时错误 424 - 需要对象
- html - 如何在 html/css 中获得嵌入式视频/元素/图像等的响应式布局?