blackboxed zone.js в инструментах разработчика, но все еще входит в zone.js

  • Я новичок в Angular.
  • Я отлаживал ниже оценочного метода.
  • когда я перехожу в инструменты разработчика, кодированный: true of Scores() входит в zone.js.
  • Я записал blackboxed zone.js, но он все еще идет в zone.js и указывает на эту строку task.callback.apply(applyThis, applyArgs);
  • Можете ли вы сказать мне, почему это происходит в zone.js, хотя я его в черном ящике.
  • было бы здорово, если бы вы, ребята, дали мне знать, чтобы в будущем я мог это исправить сам.
  • предоставив мой код ниже

мой код

scores() {
    let that = this;
    this.redoCount = 0;
    this.undoCount = 0;
    this.datasourceList = [];
    this.createDatePicker();
    $("#optPlayerDetaileditor").kendoEditor({
        tools: ["bold", "italic", "underline"],
        change: function () {
            that.sportsPlayer.sportsPlayerDetailsText = this.value();
            let eventData = { "eventKey": "optPlayerDetaileditor", "sourceValue": that.sportsPlayerDetailSource, "destinationValue": that.sportsPlayer.sportsPlayerDetailsText, "type": "generateBtn" }
            that.eventCapture(eventData);
            that.sportsPlayerDetailSource = that.sportsPlayer.sportsPlayerDetailsText;
            that.saveBtnEnableDisable();
        }, encoded: true,
        serialization: {
            semantic: false,
            entities: false,
            custom: function (html) {
                return html.replace(/<b>/g, "<B>").replace(/<\/b>/g, "</B>").replace(/<i>/g, "<I>").replace(/<\/i>/g, "</I>").replace(/<u>/g, "<U>")
                    .replace(/<\/u>/g, "</U>").replace(/<br \/>/g, "\n").replace(/&nbsp;/g, " ").replace(/&amp;/g, "&").replace(/&quot;/g, '"').replace(/&gt;/g, ">")
                    .replace(/&lt;/g, "<").replace(/&middot;/g, ".").replace(/&nbsp;/g, " ");
            }
        },
    }).text();
}

zone.js

ZoneDelegate.prototype.invokeTask = function (targetZone, task, applyThis, applyArgs) {
    try {
        return this._invokeTaskZS
                    ? this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt, this.zone, targetZone, task, applyThis, applyArgs)
                    : task.callback.apply(applyThis, applyArgs);
}

1 ответ

Не уверен, что вы подразумеваете под blackboxing Zone.js. Но метод task.callback.apply(applyThis, applyArgs) вызывается для вызова любого запланированного задания.

Например, если вы выполните window.setTimeout(cb,1000);, это на самом деле вызовет API, исправленный обезьяной, а не window.setTimeout. В этом API новый Task объект создан со свойством callback инициализируется с cb прошло в setTimeout метод. Кроме того, cb заменяется другим обратным вызовом, называемым функцией таймера. Теперь, когда время истечет, JS VM вызовет метод обратного вызова Zone.js, т.е. timer который в конечном итоге позвонит task.callback.apply(applyThis, applyArgs),

Для получения подробной информации о том, как Zone.js исправляет API, вы можете обратиться к статье ниже.

https://medium.com/reverse-engineering-angular/angular-deep-dive-zone-js-how-does-it-monkey-patches-various-apis-9cc1c7fcc321

Другие вопросы по тегам