2015-11-28 47 views
0

下面是使用帶有角度承諾的if警衛的最佳方式嗎?使用帶有Angular承諾的警戒聲明的最佳做法

function doIt(p) { 
    var dfd = $q.defer(); 
    if (!p) { 
     // this the best syntax to return the promise? 
     dfd.resolve(true); 
     return dfd.promise; 
    } 

    // whole bunch of code stuff with a resolve() and reject() 

    // finally 
    return dfd.promise; 
} 

回答

2

我認爲這將是更清潔的

function doIt(p) { 
    if (!p) 
     return $q.when(true) 
    else 
     return someLongFunction() 
} 

,或者如果你想清楚這是一個後衛​​

function doIt(p) { 
    if (!p) 
     return $q.when(true) 

    return someLongFunction() 
} 
+0

它甚至可以是'$返回q.when( !|| || someLongFunction())'。 – estus

+0

哦,是的。這絕對比較短。但作爲守衛子句模式,將第一個檢查單獨保存是很好的,就像在第二個代碼塊中一樣。乾杯! – potatopeelings