-- --
正在获取
c'est la vie 我的的小世界
【更新】分享自己封装的函数—react-native的get和post,以及一个时间函数
发表于 2018-8-4 | | APP开发

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

如下,请求带三个参数,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 冬至 南京 雨 更新



GO