我正在使用新的stacktracejs库,它返回了一个承诺。
StackTrace.get() // this results in a promise
我可以做些什么来使其同步吗?
喜欢这个:
var result = magicalSomething(StackTrace.get());
更新:现在有一个堆栈跟踪.getSync()
,它提供了部分信息,但您可以使用它。
StackTrace.js通过调用堆栈跟踪中涉及的脚本文件并为其提取其他信息来工作。这意味着您无法获取它生成的堆栈跟踪,因为部件已经是异步的。
从技术上讲,这实际上是可以解决的,并且可以同步(以冻结页面数十秒为代价) - 但这似乎不是库的设计目标。
相反,使用库提供的内容并使用给定的承诺:
StackTrace.get().then(function(result) {
// I got result here
});
:本杰明的答案更正确。从堆栈跟踪中使用它.js v1.3.0
var stacktrace = StackTrace.getSync();
如果你需要同步行为,而不关心猜测匿名函数或源映射支持或旧的IE,你可以使用堆栈跟踪基础的堆栈解析库.js - 错误堆栈解析器,这种方式:
function stacktrace() {
try {
throw new Error();
} catch (e) {
return ErrorStackParser.parse(e);
}
}
<</div>
div class="one_answers"> 只是想提一下,也可以使用 stacktrace-js 库同步获取源映射的堆栈跟踪。
它不是 API 的一部分,但可以通过一些修改来实现。
看这里: https://github.com/stacktracejs/stacktrace.js/issues/188