Как найти все функции подписки из наблюдаемой при отладке - PullRequest
0 голосов
/ 08 января 2019

Я отлаживаю через свое нокаут-приложение. Во время отладки я изменяю некоторое наблюдаемое значение, например

data.myObservable(true);

где данные передаются в мою функцию.

В этот момент, когда я анализирую переменную с помощью области видимости в консоли разработчика, я вижу, что на эту переменную зарегистрировано 3 подписки.

Есть ли способ найти расположение этих методов подписки.

1 Ответ

0 голосов
/ 08 января 2019

Поскольку это только для целей отладки, вы можете использовать свойство private _subscriptions для подписываемого .

Вот пример:

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>

Конечно, вы можете также поставить точку останова в строке, которая устанавливает наблюдаемое, а затем использовать «шаг в» для выполнения вызовов функций. Если вы «черный ящик» knockout.js в своем отладчике, он должен сразу перейти к первому подписанному методу.

...