minigame-std
Version:
Mini Game Standard Development Library.
25 lines (22 loc) • 1.09 kB
text/typescript
import { isMinaEnv } from '../../macros/env.ts';
import { addNetworkChangeListener as minaAddNetworkChangeListener, getNetworkType as minaGetNetworkType } from './mina_network.ts';
import type { NetworkType } from './network_define.ts';
import { addNetworkChangeListener as webAddNetworkChangeListener, getNetworkType as webGetNetworkType } from './web_network.ts';
export * from './network_define.ts';
/**
* 获取网络状态。
* @returns 根据浏览器支持情况不同,返回值可能为 `wifi` | `none` | `unknown` | `slow-2g` | `2g` | `3g` | `4g`
*/
export function getNetworkType(): Promise<NetworkType> {
return isMinaEnv()
? minaGetNetworkType()
: Promise.resolve(webGetNetworkType());
}
/**
* 监听网络状态变化。
* @param listener - 网络状态变化的回调函数。
* @returns 返回一个函数,调用该函数可以移除监听器。
*/
export function addNetworkChangeListener(listener: (type: NetworkType) => void): () => void {
return (isMinaEnv() ? minaAddNetworkChangeListener : webAddNetworkChangeListener)(listener);
}