【更新】分享自己封装的函数—react-native的get和post请求

【更新】分享自己封装的函数—react-native的get和post请求

猿掌柜
2018-12-22 / 0 评论 / 62 阅读 / 正在检测是否收录...

鉴于之前不熟练的业务逻辑,几乎每一个请求都是原班套用,随着熟练度,自己封装了一个函数,

如下,请求带三个参数,url,请求参数,回调函数,

举例如下:

我把需要的公用参数封装在了一个Js文件,需要的时候调用

     var url = Fn.requestUrl+'接口';  
      params={参数}  
      Fn.postRequest(url,params,function(data){  
       //你的操作
      })
//网络请求GET

  getRequest(url,params,callback){  
    if (params) {  
              let paramsArray = \[\];  
              //拼接参数  
              Object.keys(params).forEach(key => paramsArray.push(key + '=' + params\[key\]))  
              if (url.search(/\\?/) === -1) {  
                  url += '?' + paramsArray.join('&')  
              } else {  
                  url += '&' + paramsArray.join('&')  
              }  
          }  
    fetch(url,{  
        method:'GET',  
        headers:{  
          'Accept': 'application/json',  
          'Content-Type': 'application/json'  
        },  
      })  
    .then((response)=>response.json())  
    .then((json)=>{  
        callback(json);  
      })  
      .catch((error)=>{  
        console.error('error',error)  
          alert(error);  
      });  
  },  
  //网络请求POST  
   postRequest(url,params,callback){  
      fetch(url, {  
          method: 'POST',  
          headers: {  
              'Content-Type':'application/json',  
          },  
          body:JSON.stringify(params),  
        })  
        .then((response) => response.json() )  
        .then((json)=>{  
          callback(json)  
        })  
        .catch((error)=>{console.error('error',error)  
          alert(error)  
      });  

  },

时间函数,调用的时候change(参数)即可,一个月之前的显示格式为2018/08/04 上午10:51:40

如不需要显示这么全,可以把最后一句的字符串截取数更改一下即可。

  时间转换函数

change(timestamp) {  
    let currentUnixTime = Math.round((new Date()).getTime() / 1000);       // 当前时间的秒数  
    let deltaSecond = currentUnixTime - parseInt(timestamp, 10);            // 当前时间与要转换的时间差( s )  
    let result;  
    if (deltaSecond < 60) {  

    result = '刚刚';    //发现之前的几秒前会有bug,

    } else if (deltaSecond < 3600) {  
    result = Math.floor(deltaSecond / 60) + '分钟前';  
    } else if (deltaSecond < 86400) {  
    result = Math.floor(deltaSecond / 3600) + '小时前';  
    } else if(deltaSecond <2592000) {  
    result = Math.floor(deltaSecond / 86400) + '天前';  
    }else{  
        result=new Date(parseInt(timestamp) * 1000).toLocaleString().substr(0,19)  //大于一个月显示日期格式  
       }  
    return result;  
},

文章完,之前的note项目还在继续,每天晚上搞一搞,很快就能用了,目前功能基本完善,还有一个定位的判断

请关注我的上一篇文章查看进度。目前进度70%

更新一下时间函数:后台php直接转换:

* 精确时间间隔函数

* $time 发布时间 如 1356973323

* $str 输出格式 如 Y-m-d H:i:s

* 半年的秒数为15552000,1年为31104000,此处用半年的时间

function fromTime($time,$str='')
{
    isset($str)?$str:$str='m-d';
    $way = time() - $time;
    $r = '';
    if($way < 60){
        $r = '刚刚';
    }elseif($way >= 60 && $way <3600){
        $r = floor($way/60).'分钟前';
    }elseif($way >=3600 && $way <86400){
        $r = floor($way/3600).'小时前';
    }elseif($way >=86400 && $way <2592000){
        $r = floor($way/86400).'天前';
    }elseif($way >=2592000 && $way <15552000){
        $r = floor($way/2592000).'个月前';
    }else{
        $r = date("$str",$time);
    }
    return $r;
}

2018-12-22 冬至 南京 雨 更新

0

评论 (0)

取消