Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何处理链承诺的nodejs-bluebird错误_Javascript_Node.js_Callback_Promise_Bluebird - Fatal编程技术网

Javascript 如何处理链承诺的nodejs-bluebird错误

Javascript 如何处理链承诺的nodejs-bluebird错误,javascript,node.js,callback,promise,bluebird,Javascript,Node.js,Callback,Promise,Bluebird,我有两个函数返回承诺。但是我想在一个地方为这两个函数抛出一个错误。目前,我只为第二个函数获得一个catch处理程序。 下面是我的代码 modules.function1(sUserData) .then(function(finalResult) { console.log("controller Final result " + finalResult) return finalResult; }).then(function(finalResult) { co

我有两个函数返回承诺。但是我想在一个地方为这两个函数抛出一个错误。目前,我只为第二个函数获得一个catch处理程序。 下面是我的代码

modules.function1(sUserData)
  .then(function(finalResult) {
    console.log("controller Final result " + finalResult)
    return finalResult;
  }).then(function(finalResult) {
    console.log('call generateJson');
    return modules.modelClip.function2();
  }).then(function(finalResult) {
    console.log('helper result : ', finalResult);
  }).error(function(e) {
    console.log("controller Error handler " + e)
  }).catch(function(e) {
    console.log("controller Catch handler " + e)
  });
下面是function1代码

exports.function1 = function(sResultDetail) {
  console.log('inside function1');
  return new modules.promise(function(resolve, reject) {
      reject(new Error("error_34"));// or resolve('success');
  });
}
下面是function2代码

exports.function2 = function(sResultDetail) {
  console.log('inside function2');
  return new modules.promise(function(resolve, reject) {
      reject(new Error("error_34"));// or resolve('success');
  });
}

所以,如何在一个地方获得两个函数的错误,也就是说在第一次调用中。我能做到吗?或者有没有其他类似的方法?任何帮助都将不胜感激。谢谢你

我真的不明白你的问题是什么。你说的“我只为第二个函数得到一个catch处理程序”是什么意思?您的代码的当前输出是什么?这与预期有什么不同?当我在任何函数reject(新错误(“Error_34”))中执行此操作时;,我在catch函数中得到错误,而不是在实际的错误函数中,我应该在error函数中得到错误,而不是catch。不,你为什么这么认为?如果您想捕获所有内容,为什么不简单地使用一个
.catch()
(并且不使用
.error()
)呢?请访问stackoverflow.com/questions/23803743/what-is-the-explicit-promise-construction-antipattern-and-how-do-i-avoid-itI我真的不明白您的问题是什么。你说的“我只为第二个函数得到一个catch处理程序”是什么意思?您的代码的当前输出是什么?这与预期有什么不同?当我在任何函数reject(新错误(“Error_34”))中执行此操作时;,我在catch函数中得到错误,而不是在实际的错误函数中,我应该在error函数中得到错误,而不是catch。不,你为什么这么认为?如果您想捕获所有内容,为什么不简单地使用一个
.catch()
(并且不使用
.error()
)呢?请访问stackoverflow.com/questions/23803743/what-is-explicit-promise-construction-antipattern-and-how-do-i-avoid-it