在承诺流程之外抛出错误

Throwing an error outside of promise flow

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

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

  return somePromiseFunction();
}

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

您可以像这样回答被拒绝的承诺:

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

在风格上,我会颠倒条件 (params)? /* happy case */ : /* sad case */;,但由于我们正在谈论拒绝,所以我将其保留为否定。