我有一个案例,在ngOnDestroy()我停止播放背景音乐曲目.此声音加载了组件的ngOnInit(),并且因为在没有运行ngOnInit()的情况下运行ngOnDestroy(),声音对象是未定义的.
码
ngOnInit() { ... this.loadSounds(); ... } ngOnDestroy() { if (AppSettings.SOUNDS_ENABLED) { this.soundService.getSound(Sound.MINI_GAME_BG_MUSIC).fade(0.2,1500); } } private loadSounds() { this.soundService.loadSound(Sound.MINI_GAME_BG_MUSIC,SoundPathURL.MINI_GAME_BG_MUSIC,true,0); }
当尝试.fade()声音未定义时,代码在ngOnDestroy中失败.当然,我可以通过在执行.fade()函数之前检查声音是否未定义来轻松解决此问题.我的假设是,如果运行ngOnDestroy(),则必须运行ngOnInit() – 我想我错了.
现在因为这种情况我想在我的应用程序中的每个ngOnDestroy()中,我应该在执行任何操作之前检查所使用的对象是否未定义.因此,例如在取消订阅订阅之前,我应该检查订阅是否未定义,依此类推.
我这样做是对的吗?