Tengo un servicio que solo puede ejecutar un comando a la vez. Normalmente, esto está bien porque los usuarios de este servicio deben await las llamadas de servicio y, por lo tanto, solo debe comenzar una llamada de servicio a la vez; sin embargo, no puedo garantizar que siempre sea así. En su lugar, el servicio espera a finalizar su última llamada antes de comenzar la siguiente. Esto es lo que hago en C#:
static async Task<string> Get(string url, params string[] parameters) { while(!isReady) { await Task.Yield(); } // do stuff }Quiero hacer algo similar en un proyecto NodeJS no relacionado.
Mi Google-fu me falló. ¿Hay un equivalente de Javascript de Task.Yield() de C# que pueda await ?
Tengo una función de utilidad llamada esperar:
export const wait = (millis = 0) => new Promise(resolve => setTimeout(resolve, millis)) while(!isReady) await wait()¡Ah, por supuesto! Es simple. Puede que esta no sea la mejor manera, pero funciona.
static async RunCommand(cmd: string, ...params: string[]): Promise<string> { while(!this.isReady) { await new Promise(resolve => setTimeout(resolve, 0)); } // do stuff }