У меня есть обещание цепи следующим образом:Используя функцию, которая возвращает обещание, внутри а, то() блок
return performTaskA().
then(performTaskB).
then(performTaskC).
then(performTaskD).
then(performTaskE);
performTaskD
выглядит следующим образом:
function performTaskD() {
Model.something().
then(function(result) {
something something with result; //BREAKPOINT 1
});
}
Когда я бегу обещание цепь выше, BREAKPOINT 1 никогда не попадает, и управление переходит к performTaskE
. Однако, когда я вызываю функцию performTaskD()
отдельно, BREAKPOINT 1 получает удар. Что я делаю неправильно в случае с цепочкой обещаний?
Если я верну обещание в performTaskD
, у меня все еще есть такая же проблема. Единственное различие заключается в том, что элемент управления никогда не переходит к performTaskE
, и процесс завершается.
Для наглядности performTaskD
выглядит следующим образом:
AccountModel.findById(acctId).
then(function (account) {
destAccount = account; //destAccount is a var declared in the outer scope.
});
Вы Шоуда 'return' обещание от' performTaskD' так, что он получает прикован должным образом – Bergi
Покажите нам, что 'Model.something' делает. По-видимому, это проблема с запуском после других задач. Кроме того, вы пытались добавить обработчик ошибок? – Bergi
@Bergi Model.something - это просто метод мангуста, который возвращает результат 'find()', используя обещание. – Ayush