【问题标题】:how to determine source information of callback in v8如何在v8中确定回调的来源信息
【发布时间】:2012-02-10 21:56:05
【问题描述】:

是否可以在v8中确定回调的来源信息(文件、行号、列号)?

function foo(callback) {
    var x = callback();
    if (typeof x !== "string") {
        //hmmm, x is not as expected, I want to know more about the callback.
    }
}

【问题讨论】:

  • 然后添加 Node.js 标签可能会吸引知识渊博的观众。

标签: javascript node.js callback v8


【解决方案1】:

我不知道您可以在 JavaScript 中执行此操作,但如果您可以调试它,它应该会显示文件/行等。

我想这完全取决于您的设置,而我自己从未做过 - 看起来 node(使用 v8)有某种 support for that

可能有用吗?:v8 DebuggerProtocol

【讨论】:

  • 我可能确实会通过以下方式使用它:如果 x 不符合预期,请先有一个调试器语句,然后再次调用相同的回调。
  • 显然,IDE 中也有一些支持,例如 Cloud9(基于 Web)。老实说,没有尝试过,但值得一试。 stackoverflow.com/questions/5652972/…
【解决方案2】:

callsite 对此有所帮助。

它公开了__stack 全局变量,可用于获取堆栈跟踪。 __line 是当前行号。

【讨论】:

  • 我不知道怎么做。可以举个例子吗?
  • 其实我不确定它是否能做你想做的事。你到底想要什么?想知道回调定义了什么文件,什么行号?
  • 是的,这就是我想要的。如果需要破解 'Function' 的构造函数以将源信息添加到所有函数,那没关系,但我不知道如何。
  • 令人惊讶的是这个答案没有更多的关注。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-01
  • 2015-02-19
  • 2020-03-05
  • 2011-08-25
  • 1970-01-01
相关资源
最近更新 更多