如何在调试时从可观察对象中找到所有订阅函数
How to find all the subscriptions functions from an observable while debugging
我正在调试我的淘汰赛应用程序。在调试时我改变了一些可观察到的值,比如
data.myObservable(true);
数据传递到我的函数的位置。
此时,当我使用开发人员控制台中的范围分析变量时,我看到有 3 个订阅注册到该变量。
有什么方法可以找到这些订阅方法的位置。
由于它仅用于调试目的,您可以使用 private _subscriptions
property on a subscribable。
这是一个例子:
const myObs = ko.observable();
const cb1 = function(newVal) { };
const cb2 = function(newVal) { };
const cb3 = function(newVal) { };
myObs.subscribe(cb1);
myObs.subscribe(cb2);
myObs.subscribe(cb3);
myObs(10);
console.log(
"There are",
myObs.getSubscriptionsCount(),
"subscribers to `myObs`:",
myObs._subscriptions.change.map(
({ callback: { name }}) => name
).join(", ")
)
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-debug.js"></script>
当然你也可以在设置observable的那一行打断点,然后用"step in to"完成函数调用。如果您在调试器中 "blackbox" knockout.js,它应该会直接将您带到第一个订阅的方法。
我正在调试我的淘汰赛应用程序。在调试时我改变了一些可观察到的值,比如
data.myObservable(true);
数据传递到我的函数的位置。
此时,当我使用开发人员控制台中的范围分析变量时,我看到有 3 个订阅注册到该变量。
有什么方法可以找到这些订阅方法的位置。
由于它仅用于调试目的,您可以使用 private _subscriptions
property on a subscribable。
这是一个例子:
const myObs = ko.observable();
const cb1 = function(newVal) { };
const cb2 = function(newVal) { };
const cb3 = function(newVal) { };
myObs.subscribe(cb1);
myObs.subscribe(cb2);
myObs.subscribe(cb3);
myObs(10);
console.log(
"There are",
myObs.getSubscriptionsCount(),
"subscribers to `myObs`:",
myObs._subscriptions.change.map(
({ callback: { name }}) => name
).join(", ")
)
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-debug.js"></script>
当然你也可以在设置observable的那一行打断点,然后用"step in to"完成函数调用。如果您在调试器中 "blackbox" knockout.js,它应该会直接将您带到第一个订阅的方法。