根据Angular Service Worker官方文档,在预取期间,Service Worker确实会拦截其他的网络请求。在预取完成之后,所有拦截的请求将会由Service Worker自动重新发送。
代码示例:
import { SwUpdate, SwPush } from '@angular/service-worker';
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss']
})
export class AppComponent {
  constructor(private swUpdate: SwUpdate, private swPush: SwPush) {
    // Check for updates
    if (swUpdate.isEnabled) {
      swUpdate.checkForUpdate().then(() => {
        // Prompt the user to reload the app if there is a new version available
        if (swUpdate.available) {
          if (confirm('New version available. Load New Version?')) {
            window.location.reload();
          }
        }
      });
    }
  }
}
在上面的示例中,我们在组件的构造函数中注入了SwUpdate和SwPush服务。在服务的isEnabled属性返回true时,我们使用checkForUpdate()方法检查新版本的可用性。如果有一个新的版本可用,我们询问用户是否要重新加载应用程序,并根据用户的选择使用window.location.reload()方法重新加载应用程序。