我正在将 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;
}
};