fetch demo

280 阅读1分钟

fetch_demo.js

import nativeService from '@/common/services/nativeService'

// 生成随机数串
const UUID = () => {
    var d = new Date().getTime()
    var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
        var r = (d + Math.random() * 16) % 16 | 0
        d = Math.floor(d / 16)
        return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16)
    })
    return uuid
}

// 生成weex stream 请求的reqBody,String格式
const generateReqBody = reqBody => {
    let d = new Date()
    let YY = d.getFullYear()
    let MM = d.getMonth() + 1
    let DD = d.getDate()
    let hh = d.getHours()
    let mm = d.getMinutes()
    let ss = d.getSeconds()
    function formatNum(num) {
        return num > 9 ? num : `0${num}`
    }
    reqBody = Object.assign(
        {
            reqId: UUID(),
            appId: '900',
            stamp: `${YY}${formatNum(MM)}${formatNum(DD)}${formatNum(hh)}${formatNum(mm)}${formatNum(ss)}`
        },
        reqBody
    )
    return JSON.stringify(reqBody)
}

// 请求云端接口
const __fetch = options => {
    return new Promise((resolve, reject) => {
        let { url: requestUrl, params, showLoading = false, handleByPage } = options
        let requestOption = {
            method: 'POST',
            isShowLoading: showLoading
        }
        let requestParam = {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json;charset=utf-8'
            },
            data: generateReqBody(params)
        }
        console.log(`__fetch ${requestUrl} ${JSON.stringify(requestParam)}`)
        nativeService
            .sendCentralCloundRequest(requestUrl, requestParam, requestOption, handleByPage)
            .then(resp => {
                console.log(`__fetch ${requestUrl} resp ${JSON.stringify(resp)}`)
                resolve(resp)
            })
            .catch(error => {
                console.log(`__fetch ${requestUrl} error ${JSON.stringify(error)}`)
                reject(error)
            })
    })
}

// 查询空气检测仪日报数据
export const getDayRecordDemo = params => {
    return new Promise(async (resolve, reject) => {
        try {
            resolve(
                await __fetch({
                    url: '/v1/scene/airdetector/dayrecord',
                    params: {
                        homegroupId: '',
                        applianceCode: '',
                        ...params
                    }
                })
            )
        } catch (error) {
            reject(error)
        }
    })
}

export default __fetch