2016-10-14 3 views
-1

У меня есть обещание, которое возвращает функцию, функция имеет свою собственную обработку ошибок, но иногда по какой-то причине это пропущено (необходимо изучить это позже).Если обещание не возвращает значение

Я хочу добавить резервную копию, что если обещание не выполнено/null, то верните другую функцию.

if (completedForm.isValid()) { 
    return formDataQueue.push(formJson, this.company).then(function() { 
     return self.trySync(); 
    }); 
} 

Return self.trySync(): нужен обработчик ошибок предположить, что это не было, как если бы он был закомментирована. Моя попытка не работает.

if (completedForm.isValid()) { 
    return formDataQueue.push(formJson, this.company).then(function() { 
     //return self.trySync(); 
    }, function(error) { 
     router.navigate('home'); 
    }); 
} 
+0

Если 'trySync' не возвращает обещание, вы можете проверить это, но если она возвращает обещание, что никогда не будет решен, это будет сложнее – adeneo

+0

Что именно вы подразумеваете под словом «* Предположим, что это не так, как если бы он был прокомментирован *». Что может заставить его «не быть там»? – Bergi

ответ

1

Посмотрите на difference between .then(…).catch(…) and .then(…, …).

Для обработки ошибок от trySync() (и только там), вы хотите использовать

if (completedForm.isValid()) { 
    return formDataQueue.push(formJson, this.company).then(function() { 
     return self.trySync().catch(function(error) { 
      router.navigate('home'); 
     }); 
    }); 
} 
Смежные вопросы