2015-07-13 50 views
0

我有一個調用承諾函數的方法。然而,在我調用此方法之前,我需要執行一些驗證。在承諾流之外拋出錯誤

var outerMethod = function(params) { 
    if(!params) throw new Error(); 

    return somePromiseFunction(); 
} 

什麼是拋出第一個錯誤的正確方法。我曾嘗試在new Promise(function(resolve, reject) { });中包裝整個outerMethod內部內容,但這並不完美。

回答

2

你能回答我一個拒絕承諾,像這樣:

var outerMethod = function(params) { 
    return (!params)? q.defer().reject(new Error('missing params')) : somePromiseFunction(); 
} 

風格的角度來看,我會扭轉的條件(params)? /* happy case */ : /* sad case */;,但我把它否定的,因爲我們正在談論的拒絕。

+0

你碰巧知道如何以精簡的方式與Bluebird做到這一點? – cyberwombat

+0

啊。我可以用'Promise.method()'來解決它。# – cyberwombat

+0

@Yashua返回'Promise.reject(new Error(...))'可能是最乾淨的方法。 –