Я возьму трещину на свой вопрос с точки зрения фрагмента OP.Исправления приветствуются.
Если вы не видите очередь сообщений (или, по крайней мере, сценарии, поставленные в очередь), вы все равно можете увидеть код планирования других JS и код запланировано для запуска.Таким образом, отслеживание обоих возможно независимо.
Это не все хорошие новости, потому что вам все еще приходится работать, чтобы 1) адаптировать это отслеживание к различным способам, которые JS может планировать, и 2) понять, что выcapture.
В случае setTimeout
что-то быстрое и грязное, подобное этому, может, по крайней мере, обеспечить ощущение графика времени и того, когда что-то действительно произошло.Это всего лишь вопрос оборачивания функций.
const { setTimeout } = window;
// For visibility in DevTools console
window._schedulers = [];
window._calls = [];
const wrap = f => {
const { stack } = new Error();
window._schedulers.push([stack, f]);
return (...a) => {
window._calls.push([stack, f, a]);
return f(...a);
};
};
window.setTimeout = (f, delay, ...a) => {
return setTimeout.apply(window, [wrap(f), delay].concat(a));
}
Тем не менее, это всего лишь один случай, в котором ничего не говорится о том, когда начинать / останавливать мониторинг, и о потенциальных точках запуска, где отслеживание является проблемой, как упомянул Мосе Рагуццини.В случае с Обещаниями этот ответ вызывает средства проверки Bluebird.
Кажется, что пока не появятся дополнительные нативные инструменты для визуализации сценариев в очереди и связанной с ними информации, вы застряли, собирая и анализируяданные от руки.