npmchenwei111
Version:
test1111
168 lines (153 loc) • 4.25 kB
JavaScript
/**
* 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()