Tengo una API REST codificada con Node.js y hay una ruta que aplica los derechos NTFS a las carpetas. La solicitud puede tardar 1 segundo pero también puede durar varios minutos (depende del tamaño de la carpeta).
En resumen, si los derechos tardan menos de 5 segundos en aplicarse, quiero devolver el código de estado 200.
Si los derechos no han terminado de aplicarse, me gustaría devolver el código de estado 202.
Para eso uso Promise.race :
return Promise.race([applyRights(), sleep(5)] .then(result => { statusCode = 200; if (result === undefined) { statusCode = 202; } }); Mi problema es que la función applyRights realiza operaciones bastante complejas. Incluyendo escrituras en el sistema de archivos de Windows y aplicando derechos NTFS con una biblioteca C++.
Parece que la función de C++ para aplicar derechos NTFS está bloqueando el bucle de eventos . Eso significa que mi función de sleep solo se ejecuta después de applyRights .
¿Hay alguna manera fácil de ejecutar la función C++ en otro subproceso o algo así para permitir que el trabajo continúe en segundo plano sin bloquear el ciclo de eventos?
¿O necesito actualizar la biblioteca de C++? (lo que me gustaría evitar hacer)