Angular 动态加载脚本时如何检查错误代码(例如403)?

Angular 动态加载脚本时如何检查错误代码(例如403)?,angular,typescript,rxjs,Angular,Typescript,Rxjs,在我的应用程序中,我有一个动态加载脚本的函数。当脚本加载期间出现错误时,我想向用户提供更具体的反馈。这就是为什么我想添加检查状态代码的逻辑(例如,403-未验证) 下面是我用来加载脚本的脚本: private _scripts: { [key: string]: Subject<Event> } = {}; load(url: string): Observable<Event> { if (this._scripts[url]) { retur

在我的应用程序中,我有一个动态加载脚本的函数。当脚本加载期间出现错误时,我想向用户提供更具体的反馈。这就是为什么我想添加检查状态代码的逻辑(例如,
403
-未验证)

下面是我用来加载脚本的脚本:

private _scripts: { [key: string]: Subject<Event> } = {};

load(url: string): Observable<Event> {
    if (this._scripts[url]) {
        return this._scripts[url];
    }

    this._scripts[url] = new ReplaySubject<Event>(1);

    let script = this.document.createElement("script");
    script.src = url;
    script.onload = (event: Event) => {
        this._scripts[url].next(event);
        this._scripts[url].complete();
    };
    script.onerror = (error: string | Event) => {
        this._scripts[url].error(error);
    };
    
    this.document.head.appendChild(script);

    return this._scripts[url].asObservable();
}
private_脚本:{[key:string]:Subject}={};
加载(url:string):可观察{
如果(此._脚本[url]){
返回此。_脚本[url];
}
此.u脚本[url]=新的ReplaySubject(1);
让script=this.document.createElement(“脚本”);
script.src=url;
script.onload=(事件:事件)=>{
此._脚本[url]。下一个(事件);
此.u脚本[url].complete();
};
script.onerror=(错误:字符串|事件)=>{
此.u脚本[url]。错误(error);
};
this.document.head.appendChild(脚本);
返回此。\u脚本[url].asObservable();
}
上述脚本的问题在于,
onerror
回调函数中没有返回错误代码。这是因为在
this.document.head.appendChild(脚本)上抛出了错误代码脚本
元素添加到DOM时的代码>行

我曾尝试将逻辑包装在
try-catch
中,但没有成功,catch语句也没有被调用。下面是我的浏览器控制台的一个片段,显示我在
catch
语句中的断点没有被击中


在我的情况下,捕捉错误代码的最佳方法是什么?

我认为
onerror
是最好的方法。尝试将断点添加到
onerror
处理程序中,确保它实际上没有被调用。此外,这里可能还有一些其他错误。例如,将
document
指定给对象上的属性有点奇怪。确保调试控制台中未记录任何内容。@loremdipso正在调用
onerror
处理程序,并在控制台中记录信息(请参阅)。但是,它没有提供任何有用的信息来检查错误是否确实是
403
。它只是提供了关于它无法加载脚本的信息。那么,也许可以看看这个。基本上,它们使用AJAX重新请求相同的资源,AJAX提供了一个状态代码。