UNPKG

@megalo/api

Version:

重新封装各个端中的API,由 megalo 统一对外抛出方法名。目前微信小程序端提供的 API 最为丰富,所以 API 名称以微信小程序为准。

70 lines (61 loc) 1.52 kB
function getConnection() { return navigator.connection || navigator.mozConnection || navigator.webkitConnection; } function getNetworkType() { let connection = getConnection(); let res = {}; if (!connection) { res.networkType = 'unknown'; return Promise.resolve(res); } if (!navigator.onLine) { res.networkType = 'none'; return Promise.resolve(res); } let type = 'unknown'; if (!isNaN(Number(connection.type))) { switch(connection.type) { case connection.WIFI: type = 'wifi'; break; case connection.CELL_3G: type = '3g'; break; case connection.CELL_2G: type = '2g'; break; default: type = 'unknown'; } } else if (connection.type) { type = connection.type; } else if (connection.effectiveType) { type = connection.effectiveType; } res.networkType = type; return Promise.resolve(res); } function onNetworkStatusChange(cb) { let connection = getConnection(); if (connection) { connection.addEventListener('change', () => { getNetworkType() .then(res => { const { networkType } = res; const isConnected = networkType !== 'none'; cb({ isConnected, networkType, }); }); }); } } export default { install(Megalo) { Object.assign(Megalo, { getNetworkType, onNetworkStatusChange, }); } };