检查网络应用程序是否在线或离线

Quo*_*oon 2 rxjs angular

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

 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);
            }
        });
Run Code Online (Sandbox Code Playgroud)

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

小智 6

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);
    }
});
Run Code Online (Sandbox Code Playgroud)

这将根据浏览器的在线状态发出truefalse 。