angular - 检查网络应用程序是在线还是离线

标签 angular rxjs

这是检查应用程序在线或离线的代码:

 this.online$ = Observable.merge(
            Observable.of(navigator.onLine),
            Observable.fromEvent(window, 'online').map(() => true),
            Observable.fromEvent(window, 'offline').map(() => false)
        )
        this.online$.subscribe(isOnline=>{
            if(isOnline){
              console.log(isOnline);
            }else{
              console.log("you are offline");
              console.log(isOnline);
            }
        });

但它总是返回 true 这意味着他们在线但这是错误的结果。我关闭了系统互联网,他们不太可能返回相同的结果(正确)。

最佳答案

import { fromEvent, merge, of } from 'rxjs';
import { mapTo } from 'rxjs/operators';


this.online$ = merge(
       of(navigator.onLine),
       fromEvent(window, 'online').pipe(mapTo(true)),
       fromEvent(window, 'offline').pipe(mapTo(false))
    );

this.online$.subscribe((isOnline) =>{
  if(isOnline) {
    console.log(isOnline);
    } else {
      console.log("you are offline");
      console.log(isOnline);
    }
});

This will emit true or false based on the browsers online status.

关于angular - 检查网络应用程序是在线还是离线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42927071/

相关文章:

带有 *ngFor、双向绑定(bind) [(ngModel)] 和表单验证的 angular2 动态表单

javascript - AmplifyJS 状态错误 TypeError : Cannot read property 'state' of undefined

angular - 比较两个大对象的 Angular 会导致渲染速度变慢

angular - 创建 'once emitting' 可观察对象

angular - 如何为 Subject RxJS observable 分配初始值?

javascript - 如何将函数或其返回值从 typescript (.ts) 导入 javascript (.js)

forms - Angular2动态添加/删除表单字段

javascript - 将响应式(Reactive)编程 RXJS 与适用于 JavaScript 的 AWS 开发工具包结合使用

javascript - 将多个可观察数组组合成新的对象数组

javascript - RxJS,如何轮询 API 以使用动态时间戳持续检查更新的记录