在承诺流之外抛出错误
问题描述:
我有一个调用承诺函数的方法。然而,在我调用此方法之前,我需要执行一些验证。在承诺流之外抛出错误
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 */;
,但我把它否定的,因为我们正在谈论的拒绝。
你碰巧知道如何以精简的方式与Bluebird做到这一点? – cyberwombat
啊。我可以用'Promise.method()'来解决它。# – cyberwombat
@Yashua返回'Promise.reject(new Error(...))'可能是最干净的方法。 –