简介
find-callsite
是一个基于 v8 栈追踪API 的 npm 包,用于获取 JavaScript 函数的调用栈信息。通过分析函数调用栈,我们可以深入了解代码的执行流程和性能瓶颈,有助于优化程序设计和调试错误。
安装
在终端中输入以下命令进行安装:
--- ------- -------------
使用
find-callsite
提供了两种主要的调用方式:同步调用与异步调用。
同步调用
在同步调用中,需要传递一个回调函数,该函数接收一个 CallSite
对象数组作为参数。每个 CallSite
对象包含了调用栈的一帧信息,包括被调用的函数名、文件名、行列号等等。
下面是一个简单的示例:
----- ------------ - ------------------------- -------- ----- - ------ - -------- ----- - ------ - -------- ----- - ---------------------------- - ------
运行上述代码后,输出结果如下所示:
- -------- - ------------ ---------- ------------- ------------ ---------- ------------- -------------- ---------- --------------- ------------ ---------- ------------- -------------- ---------- --------------- ---------------- ---------- ----------------- -------------- ---------- --------------- ----------- ---------- ------------ ------- ---------- -------- --------- ---------- ---------- -------------- ---------- --------------- -------- ---------- --------- ------------- ---------- -------------- ---------------- ---------- ---------------- -- -------- - ------------ ---------- ------------- ------------ ---------- ------------- -------------- ---------- --------------- ------------ ---------- ------------- -------------- ---------- --------------- ---------------- ---------- ----------------- -------------- ---------- --------------- ----------- ---------- ------------ ------- ---------- -------- --------- ---------- ---------- -------------- ---------- --------------- -------- ---------- --------- ------------- ---------- -------------- ---------------- ---------- ---------------- -- -------- - ------------ ---------- ------------- ------------ ---------- ------------- -------------- ---------- --------------- ------------ ---------- ------------- -------------- ---------- --------------- ---------------- ---------- ----------------- -------------- ---------- --------------- ----------- ---------- ------------ ------- ---------- -------- --------- ---------- ---------- -------------- ---------- --------------- -------- ---------- --------- ------------- ---------- -------------- ---------------- ---------- ---------------- - -
异步调用
在异步调用中,需要传递一个回调函数,该函数接收一个 CallSite
对象数组作为参数。与同步调用不同的是,异步调用返回一个 Promise 对象,在 Promise 完成时调用回调函数。
下面是一个简单的示例:
----- ------------ - ------------------------- ----- -------- ----- - ----- ------ - ----- --------------------- -------------------- - ------
运行上述代码后,输出结果如下所示:
- -------- - ------------ ---------- ------------- ------------ ---------- ------------- -------------- ---------- --------------- ------------ ---------- ------------- -------------- ---------- --------------- ---------------- ----------------------------------------------------------- ---------- ---------------------------------------------------------------------------------------