2013-09-24 44 views
15

我将如何返回承诺但立即调用其失败块?这里有一个粗糙的方式来做到这一点:如何退回失败的承诺?

if (fail) { 
    var q = $q.deferred(); 

    $timeout(function() { 
     q.reject("") 
    }, 1); 

    return q.promise; 
} else { 
    return $http.get("/").then(function(data) {}); 
} 
+0

你为什么要这么做?请张贴所有代码块 –

+0

,因为我想在调用函数中调用catch块。 – yayitswei

+1

这看起来很好。你面临的问题是什么?你如何捕捉失败? – Chandermani

回答

17
if(fail) { 
    return $q.reject(yourReasonObject); 
} 
else ... 

参考here :)

0
function setLike(productId){ 
    return new Promise(function(succeed, fail) { 
     if(!productId) throw new Error(); 
     jQuery.ajax({ 
      success: function (res) { 
       succeed(res) 
      } 
     }) 
    }) 
} 


    setLike(id).then(function(){ 

     //render 

    }).catch(function(e){})