UNPKG

npmchenwei111

Version:

test1111

168 lines (153 loc) 4.25 kB
/** * Created by chenwei on 2017/8/23. */ import { fetchPostPromise } from './Request' import YTInvokeLoading from '../../src/native/YTInvokeLoading' import YTShowToast from '../../src/native/YTShowToast' class RequestSimplify { /** * 此函数仅做单个请求的通用处理,需要复杂处理,直接使用fetchPost * * 默认提供YTInvokeLoading * * 默认对请求失败时弹出toast * * @param api //请求的api string * @param params //参数 {} * @param successCallback //成功时回调 参数是 返回值的res * @param errorCallback //返回失败时回调 ,参数是 err.msg * * 示例 RequestSimplify.fetch(YoujieApi.match_company_details, {}, (res) => { this.setState({ company: res.data.company, userMatchCompanyVo: res.data.userMatchCompanyVo, }) }) * * */ fetch (api, params, successCallback, errorCallback, loading = true, cancelable = true) { if (!api) return if (loading) { YTInvokeLoading.show(null, cancelable) } fetchPostPromise(api, params).then((res) => { if (loading) { YTInvokeLoading.dismiss() } if (!res.data) { res.data = {} } if (typeof successCallback === 'function') { successCallback(res) } }).catch((err) => { if (loading) { YTInvokeLoading.dismiss() } let errStr = (err && err.msg) ? err.msg : err if (errStr) { YTShowToast.show(errStr) } if (typeof errorCallback === 'function') { errorCallback(errStr ? errStr : '') } }) } /** * 同上,没有Loading * @param api * @param params * @param successCallback * @param errorCallback */ fetchNoLoading (api, params, successCallback, errorCallback) { this.fetch(api, params, successCallback, errorCallback, false, true) } fetchNoCancelable (api, params, successCallback, errorCallback) { this.fetch(api, params, successCallback, errorCallback, true, false) } /** * 此函数仅做多个个请求的通用处理,需要复杂处理,直接使用fetchPost * * 默认提供YTInvokeLoading * * 默认对请求失败时弹出toast * * @param calls //格式如下 [{api, params},{api, params}] * @param params //参数 {} * @param successCallback //成功时回调 参数是 返回值的(res.data,res.msg) * @param errorCallback //返回失败时回调 ,参数是 err.msg * * 示例 // RequestSimplify.fetchAll([ // { // api: YoujieApi.bind_carriers_servicecode, // params: {} // }, // { // api: YoujieApi.authentic_needinfo, // params: {} // } // ], (reses) => { // // console.log('TAG', reses) // }) * * * */ fetchAll (calls, successCallback, errorCallback, loading = true, cancelable = true) { if (!calls || calls.length === 0) return if (loading) { YTInvokeLoading.show(null, cancelable) } Promise.all( calls.reduce((arr, item) => { arr.push(fetchPostPromise(item.api, item.params)) return arr }, []) ).then((reses) => { if (loading) { YTInvokeLoading.dismiss() } if (!reses) { reses = [] } for (let i = 0; i < calls.length; i++) { if (!reses[i]) { reses[i] = {} } } if (typeof successCallback === 'function') { successCallback(reses) } }).catch((err) => { if (loading) { YTInvokeLoading.dismiss() } let errStr = (err && err.msg) ? err.msg : err if (errStr) { YTShowToast.show(errStr) } if (typeof errorCallback === 'function') { errorCallback(errStr ? errStr : '') } }) } /** * 同上,没有Loading * @param api * @param params * @param successCallback * @param errorCallback */ fetchAllNoLoading (calls, successCallback, errorCallback) { this.fetchAll(calls, successCallback, errorCallback, false, true) } fetchAllNoCancelable (calls, successCallback, errorCallback) { this.fetchAll(calls, successCallback, errorCallback, true, false) } } export default new RequestSimplify()