回调队列(调试器)内部是什么?

时间:2019-08-21 16:38:03

标签: javascript

我想知道如何知道回调队列的内容。
例如,如果您考虑以下Javascript代码:

<script>
    console.clear();   
    setTimeout( function () {console.log("Hello ")},5000);      
    console.log("What is inside Callback Queue ? ");        
</script> 

是否有将回调队列的内容打印到控制台的方法?
如果不可能以这种方式,则调试器是否可以通过在行console.log("What is inside ...?");上添加断点来实现(我尝试使用Firefox调试器,但没有设法做到这一点)
还是其他解决方案? 感谢您的回答。

2 个答案:

答案 0 :(得分:1)

浏览器开发人员工具的“性能”选项卡包含所有需要的信息。请执行以下操作:

  1. 过滤标记:函数调用(只是避免了很多 信息)

  2. 开始录制

  3. 重新加载(CTRL + R)

  4. 停止记录(以我的示例为例,当Hello打印到控制台时)

在瀑布中,单击5000ms之后出现的标记(以我的示例为例),并且有用的信息显示在右窗格中。

答案 1 :(得分:-1)

虽然我不确定您的最终目标是什么,但是您可以使用下面的wrapper函数包装正在调用的函数,该函数在排队时会打印到日志中:

function wrapper(func) {
  console.log(`'${func.name}' was enqueued`);
  return func;
}

function foo() {
  console.log('Hello')
}

setTimeout(wrapper(foo), 5000);

您可以使用类似的机制来维护一个数组,该数组将包含当前正在等待的所有函数。