Question

Je découvre la bibliothèque Kris Koval Q et j'ai un problème.Regardez ce code simple :

function getPromise1() {
    var deferred = Q.defer();
    setTimeout(function () {
        console.log('Promise 1 OK');
        deferred.resolve();
    }, 1000);
    return deferred.promise;
}


function getPromise2() {
    var deferred = Q.defer();
    setTimeout(function () {
        console.log('Promise 2 Failed');
        deferred.reject();
    }, 1000);
    return deferred.promise;
}

getPromise1()
    .then(getPromise2())
    .fail(function () {
        alert('Fail!');
    })
    .done();

Je m'attends à voir :

Promise 1 OK
Promise 2 Failed

puis affichez l'alerte "Échec!", mais l'alerte ne s'affiche jamais.Au lieu de cela, je vois un avertissement dans ma console :

[Q] Unhandled rejection reasons (should be empty): ["(no stack) undefined"] 

Pourquoi le rejet n’est-il pas géré et comment puis-je le gérer ?

Était-ce utile?

La solution

Dans le then fonction, vous devez passer juste le getPromise2 fonction, pas le résultat de getPromise2()

getPromise1()
    .then(getPromise2)            // NOTE: We are not calling it here
    .fail(function () {
        console.log('Fail!');
    })
    .done();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top