在承诺流之外抛出错误

问题描述:

我有一个调用承诺函数的方法。然而,在我调用此方法之前,我需要执行一些验证。在承诺流之外抛出错误

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

    return somePromiseFunction(); 
} 

什么是抛出第一个错误的正确方法。我曾尝试在new Promise(function(resolve, reject) { });中包装整个outerMethod内部内容,但这并不完美。

你能回答我一个拒绝承诺,像这样:

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(...))'可能是最干净的方法。 –