Sto studiando il modello di promesse e con q di kriskowal per node.js,Cosa succede se rifiuto/risolvo più volte in q di Kriskowal?
avere questo frammento:
var deferred = Q.defer();
try {
messageData = JSON.parse(message);
} catch (e) {
global.logger.warn('Error parsing JSON message.');
deferred.reject(e);
}
...
if (some_reason)
deferred.resolve(something);
...
return deferred.promise;
se sia il parser non riesce e some_reason è vero?
L'esecuzione procede dal rifiuto attraverso la risoluzione e il metodo di entrambe le promesse può essere chiamato in momenti diversi, generando così un errore?
Devo evitare di chiamare rifiutare/risolvere più volte?
Non so della gara, ho usato jQuery differite esattamente per quello. per esempio. andare alla schermata successiva quando l'utente fa clic o quando scade il tempo. "Qualunque cosa arriverà prima". Trovo strano che le librerie come Kew.js generino effettivamente un errore quando provano a risolvere due volte. :( –
@ bfred.it: Sì, puoi * farlo * ma è meglio fare esplicitamente 'Q.race (getNextUserClick(), Q.timeout (...)). Then (nextScreen)' di [avere un singolo differito] (https://github.com/petkaantonov/bluebird/wiki/Promise-anti-patterns#the-deferred-anti-pattern) e risolvendolo manualmente più volte. – Bergi
'Race' è interessante ma kew.js doesn ' In realtà lo sono, sfortunatamente. –