UNPKG

dy_card

Version:

Quickapp Sample Template

91 lines (85 loc) 2.2 kB
/** * 封装了一些网络请求方法,方便通过 Promise 的形式请求接口 */ import $fetch from '@system.fetch' import $utils from './utils' const TIMEOUT = 20000 Promise.prototype.finally = function(callback) { const P = this.constructor return this.then( value => P.resolve(callback()).then(() => value), reason => P.resolve(callback()).then(() => { throw reason }) ) } /** * 调用快应用 fetch 接口做网络请求 * @param params */ function fetchPromise(params) { return new Promise((resolve, reject) => { $fetch .fetch({ url: params.url, method: params.method, data: params.data }) .then(response => { const result = response.data const content = JSON.parse(result.data) /* @desc: 可跟具体不同业务接口数据,返回你所需要的部分,使得使用尽可能便捷 */ content.success ? resolve(content.value) : resolve(content.message) }) .catch((error, code) => { console.log(`🐛 request fail, code = ${code}`) reject(error) }) .finally(() => { console.log(`✔️ request @${params.url} has been completed.`) resolve() }) }) } /** * 处理网络请求,timeout 是网络请求超时之后返回,默认 20s 可自行修改 * @param params */ function requestHandle(params, timeout = TIMEOUT) { try { return Promise.race([ fetchPromise(params), new Promise((resolve, reject) => { setTimeout(() => { reject(new Error('网络状况不太好,再刷新一次?')) }, timeout) }) ]) } catch (error) { console.log(error) } } export default { post: function(url, params) { return requestHandle({ method: 'post', url: url, data: params }) }, get: function(url, params) { return requestHandle({ method: 'get', url: $utils.queryString(url, params) }) }, put: function(url, params) { return requestHandle({ method: 'put', url: url, data: params }) } // 如果,method 您需要更多类型,可自行添加更多方法; }