Я объединил некоторые типичные (анти-) рисунки, которые я придумал, глядя на javascript, используя Q library:Можно ли упростить вложенные отложенные Q Promises?
Насколько это можно упростить? (Или не имеет смысла) Тем:
- A: Какое значение в
deferred.resolve(...
над возвращающая значение и, таким образом, решения сразу же? Только тот факт, что код, который добавляет следующий код, выполняется, т.е.doSomeMore()
? - если да, то для A2 это бессмысленно в этом коде?
- B: Что такое значение в
deferred.reject
надthrow throw new Error('')
C: попытка прилов также раздражает меня. Только для обеспечения
doSomeMore()
?функция Foo (и) {
var deferred = Q.defer(); bar(u).then(function (v) { if (v==42) { deferred.resolve(Q(null)); // A } else { try { var controller = new Controller(); deferred.resolve(controller); // A2 } catch (error) { deferred.reject(error); // B,C } doSomeMore(); } return deferred.promise; });
}
Я смущен относительно того, что этот код должен делать. Кроме того, этот код даже не будет разбираться; есть недостающая конечная скобка для 'then ('. –
Вы говорите, что вы специально объединили антипаттерны? – Bergi
@Bergi: У меня есть _found_ их в существующем коде и затухал, чтобы сосредоточиться на соответствующих частях проблем, которые я вижу. .. –