Я изучаю шаблон обещаний и используя д kriskowal в для Node.js,Что произойдет, если я отклоняю/разрешаю несколько раз в цикле Крисковаля?
имея этот фрагмент:
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;
Что делать, если и анализатор не может и some_reason верно?
Будет ли процесс исполнения отклоняться посредством решения и метод обеим обещаниям в разное время, что приведет к возникновению ошибки?
Должен ли я избегать многократного отклонения/разрешения?
Я не знаю о гонке, я использовал jQuery отложенные именно для этого. например перейдите к следующему экрану, когда пользователь нажмет или когда закончится время. "Что наступит раньше". Мне кажется странным, что библиотеки, такие как Kew.js, на самом деле бросают ошибку при попытке решить дважды. :( –
@ bfred.it: Да, вы * можете * сделать это. Но лучше явно делать Q.race (getNextUserClick(), Q.timeout (...)), затем (nextScreen) ', чем [с одним отложенный] (https://github.com/petkaantonov/bluebird/wiki/Promise-anti-patterns#the-deferred-anti-pattern) и вручную разрешая это несколько раз. – Bergi
'Race' интересен, но kew.js doesn ' На самом деле это, к сожалению. –