2013-07-09 15 views
14

Dostaję się do obietnicy obietnica z Q i otrzymuję ostrzeżenie "[Q] Nieobsługiwane powody odrzucenia (powinny być puste)" w konsoli. Co robię źle?Nieobsługiwane powody odrzucenia (powinny być puste)

http://jsfiddle.net/FpyDr/1/

function load(url) { 
    var deferred = Q.defer(); 

    $.ajax({ 
     type: "GET", 
     processData: false, 
     dataType: "html", 
     url: url, 
     cache: false 
    }).done(function (response, status, xhr) { 

     deferred.reject(new Error("test error")); 

     return; 
    }).fail(function (xhr, status, error) { 

     deferred.reject(new Error("ajax failed")); 

     return; 
    }); 

    return deferred.promise; 
} 

load("http://fiddle.jshell.net") 
    .then(function (result) { 
     console.log("got result", typeof(result)); 
    }) 
    .catch(function (error) { 
     console.log("got error", error); 
     return true; 
    }) 
    .done(); 
+0

Wydaje się, że jest to błąd w Q. Oczekuje się, że wiadomość zostanie czasami zalogowana, ale w tym przypadku powinna być pustą tablicą. – ForbesLindesay

+0

To wygląda na błąd z Q, ale na podstawie mojej wiedzy o implementacji Q, jest to również nieuniknione, ponieważ 'catch' faktycznie tworzy nowy –

Odpowiedz

Powiązane problemy