Estoy usando el paquete fabricjs y quiero usar la función fabric.Image.fromURL . La documentación para esta función es la siguiente:
(estático)
fromURL(url, callbackopt, imgOptionsopt)Crea una instancia de
fabric.Imagea partir de una cadena de URL
Parámetros:
Nombre Escribe Atributos Descripción URL Cuerda URL para crear una imagen desde llamar de vuelta función <opcional> Devolución de llamada para invocar cuando se crea la imagen (la imagen recién creada se pasa como primer argumento). El segundo argumento es un booleano que indica si ocurrió un error o no. imgOpciones Objeto <opcional> Objeto de opciones
Refactorizaría mi código para usar la notación Promise moderna en lugar de devoluciones de llamadas anidadas. ¿Puedo refactorizar esta función en una Promesa?
Actualmente, si quiero agregar dos imágenes seguidas, mi código se ve así:
# add first image fabric.Image.fromURL(url1, function (oImg: any) { canvas.add(oImg); # add second image fabric.Image.fromURL(url2, function (oImg: any) { canvas.add(oImg); } })Me encantaría poder reescribirlo como
async def addImages() { await promisifiedImageFromURL(url1) await promisifiedImageFromURL(url2) } He buscado en util.promisify ( https://nodejs.org/api/util.html#utilpromisifyoriginal ) pero esta función espera que la función correspondiente esté en un formato específico: una sola devolución de llamada de error primero. La función fromURL , por otro lado, está en un formato no estándar, que es donde tengo problemas
Estoy investigando funciones prometidas personalizadas, pero honestamente estoy sobre mi cabeza aquí
const promiseFromUrl = (url, imgOptions) => { return new Promise((res, rej) => { const callback = (image, isError) => { if (isError) rej(new Error('Some error occurred')); else res(image); }; fromURL(url, callback, imageOptions); }); }