Tengo una función de devolución de llamada que recibe la llamada de algún otro objeto que no puedo controlar. Necesito esperar hasta que se llame a esta función de devolución de llamada, no me importa quién.
var successFunc = function() { // do stuff } myObject.onSuccess = successFunc; // hang on until successFunc is called...Encontré esta solución hacky, pero apesta:
var completed = false; var successFunc = () => { // do stuff completed = true; } myObject.onSuccess = successFunc; while (!completed) { sleep(200); // sleeps for 200 ms }Cree una promesa, pase su función de resolve como devolución de llamada a la persona que llama desconocida de alguna manera, escuche la resolución de la promesa:
let callback; const promise = new Promise(r => callback = r); promise.then(() => console.log('unknown caller called')); setTimeout(function unknownCaller() { console.log('randomly calling back'); callback(); }, Math.random() * 5000);