相关疑难解决方法(0)

Promise和泛型.catch()语句

我正在为我的系统编写一个API,它将XHR发送到服务器并返回一个应该由调用者处理的promise - 到目前为止一直很好.

对于每个API调用,我必须使用.then.catch调用,但通常(如75%的时间).catch引用相同的功能,只使用打印console.error.

我的问题是 - 有没有办法为我创建的每个promise附加一个默认的catch语句?(让我们说打印到控制台),对于我希望进一步处理拒绝的每个承诺,我会添加另一个.catch调用(甚至覆盖它)?

每个调用都有自己的.catch的简化示例:http://jsbin.com/waqufapide/edit?js,console

试图实现所需行为的非工作版本:http://jsbin.com/nogidugiso/2/edit?js,console

在第二个示例中,deferred.promise我返回一个附加catch()处理程序的promise ,而不仅仅是返回:

return deferred.promise.catch(function (error) {
  console.error(error);
});
Run Code Online (Sandbox Code Playgroud)

这两个then渔获物和then函数调用在这种情况下.

我确实知道Q暴露了getUnhandledReasons()函数和onerror事件,但我真的不想.done()用于每个promise,也不构建某种定时器/间隔来处理未处理的拒绝列表.

其他库,如bluebird暴露onPossiblyUnhandledRejection事件,我不得不承认这是一个更好的解决方案,但仍然不是我正在寻找的.

javascript promise q bluebird

10
推荐指数
1
解决办法
1004
查看次数

标签 统计

bluebird ×1

javascript ×1

promise ×1

q ×1