Je mehr einfache Antwort ist, dass:
$q.reject("error")
ein Objekt neues Versprechen erstellt, die von Ihrem $q.when().then()
aufgerufen wird.
Dies wird wirklich nicht tun, was Sie denken. $q.reject("error")
gibt ein Objekt mit einer then
Funktion zurück.
Blick auf dem Abschnitt Methoden im docs:
promiseB = promiseA.then(function(result) {
// success: do something and resolve promiseB
// with the old or a new result
return result;
}, function(reason) {
// error: handle the error if possible and
// resolve promiseB with newPromiseOrValue,
// otherwise forward the rejection to promiseB
if (canHandle(reason)) {
// handle the error and recover
return newPromiseOrValue;
}
return $q.reject(reason);
});
Siehst du, wie sie then(function() { return $q.reject(reason); })
tun, die sehr verschieden von dem Original ist.
Siehe neue fiddle
Sie wollen '$ q.when (" error "). Dann ($ q.reject)' – Bergi