1

我正在将 Zone.js 与一个项目一起使用来处理异步功能,我正在阅读源代码以及它们之间的关系,但对于了解所有功能(如 runGuarded)如何帮助我处理异步内容仍然是新的,之前使用过 Zone.js 的任何人单独帮助该项目,我有兴趣了解更多关于所有内容的信息,特别是 runGuarded 在区域中的工作方式,如果有人可以解释,这里是源代码的片段:

  Zone.prototype.runGuarded = function (callback, applyThis, applyArgs, source) {
            if (applyThis === void 0) { applyThis = null; }
            if (applyArgs === void 0) { applyArgs = null; }
            if (source === void 0) { source = null; }
            _currentZoneFrame = { parent: _currentZoneFrame, zone: this };
            try {
                try {
                    return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source);
                }
                catch (error) {
                    if (this._zoneDelegate.handleError(this, error)) {
                        throw error;
                    }
                }
            }
            finally {
                _currentZoneFrame = _currentZoneFrame.parent;
      }
   };
4

0 回答 0