Files
pda-uniapp/utils/network.js
T

47 lines
976 B
JavaScript

let online = true
let listening = false
const listeners = new Set()
function notify() {
for (const listener of listeners) listener(online)
}
function ensureListening() {
if (listening || typeof uni === 'undefined') return
listening = true
if (typeof uni.onNetworkStatusChange === 'function') {
uni.onNetworkStatusChange((result) => {
online = Boolean(result.isConnected)
notify()
})
}
if (typeof uni.getNetworkType === 'function') {
uni.getNetworkType({
success: (result) => {
online = result.networkType !== 'none'
notify()
}
})
}
}
export function isOnline() {
ensureListening()
return online
}
export function requireOnline(message = '当前网络不可用,请联网后刷新重试') {
if (!isOnline()) {
const error = new Error(message)
error.network = true
throw error
}
}
export function watchNetwork(listener) {
ensureListening()
listeners.add(listener)
listener(online)
return () => listeners.delete(listener)
}