【发布时间】:2014-11-07 18:01:41
【问题描述】:
我正在尝试了解如何调试基于 Promise 的异步代码。承诺是指基于 ECMAScript 6 的承诺,而调试是指使用内置的 chrome 或 firefox 调试器。
我遇到的问题是,当发生错误时,无论我如何“拒绝”它,我似乎都无法获得堆栈跟踪。
我试过这些:
console.log(new Error('Error occured'));
throw new Error('Throwing an Error');
return new Error('Error returned by the onRejected function');
reject(new Error('Pass Error to the reject function'));
但是这些都没有返回代码中的实际错误,或者堆栈跟踪。
所以我的问题是 - 如何正确调试 javascript Promises?
【问题讨论】:
-
基于html5rocks.com/en/tutorials/es6/promises 我宁愿这样做:
reject('Error')但你能发布一个 jsfiddle 以便我们有一些具体的工作吗? -
这是使用 Bluebird Promise 库的主要优势之一。只要您的承诺代码中有未处理的拒绝或异常,它就会为您捕获堆栈跟踪。我一直在将它与 node.js 一起使用,它节省了大量时间。老实说,我不知道如何通过内置的 Promise 获得相同的功能。
-
@Renra 请不要给出不好的建议 - 抛出(或拒绝)原语是一种令人讨厌的习惯,会使调试变得更加困难。
标签: javascript promise es6-promise