在promise流程之外抛出错误

时间:2015-07-13 00:45:10

标签: node.js promise bluebird

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

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

  return somePromiseFunction();
}

抛出第一个错误的正确方法是什么。我已经尝试将整个outerMethod内部内容包装在new Promise(function(resolve, reject) { });中,但这并没有完全解决问题;

1 个答案:

答案 0 :(得分:2)

你可以回答一个被拒绝的承诺,如下:

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

风格方面,我会改变条件(params)? /* happy case */ : /* sad case */;,但由于我们在谈论拒绝,所以我将其置于否定状态。