超简单 Promise封装小程序ajax 超好用 以及封装登录
//网络类
//封装网络请求
const ajax = (ajaxData, method) => {
wx.showLoading({
title: '加载中',
mask: true
});
console.log('use ajax', ajaxData.url)
return new Promise((resolve, reject) => wx.request({
url: ajaxData.url,
method: method || 'GET',
data: ajaxData.data,
success(e) {
// console.log('ajax',e);
if(e.data.retcode == 0) {
resolve(e)
wx.hideLoading();
} else {
wx.showToast({
title: e.data.message,
icon: 'none'
})
reject(e)
}
},
fail(e) {
wx.showLoading({
title: '网络错误'
})
}
}))
}
调用:
对应的JS页面头部引入
let util = require('../../utils/util')
var url = "https://api.map.baidu.com/geocoder/v2/";
var params = {
ak: "btdLALhz2PRv8iqW6oT95l6p", //免费去百度地图上申请一个
output: "json",
location: latitude + "," + longitude
} util.ajax({
url,
data: params
}).then(res => {
console.log(res);
})
或者将数据交互和逻辑分离开来,需要用的时候再调用
var url = "https://api.map.baidu.com/geocoder/v2/";
var params = {
ak: "btdLALhz2PRv8iqW6oT95l6p", //免费去百度地图上申请一个
output: "json",
location: latitude + "," + longitude
} let planAjax = util.ajax({
url,
data: params
}) planAjax.then(res => {
console.log(res);
})
//判断是否登录
const checkLogin = () => {
return new Promise((resolve, reject) => {
let token = wx.getStorageSync('token');
let userId = wx.getStorageSync('userId');
//验证token是否存在
if(token && userId) {
//验证token是否过期
ajax({
url: API + 'account/checktoken',
data: {
userId,
token
}
}).then(e => {
//未过期 开始执行业务逻辑
resolve();
}).catch(e => {
// 过期 清空本地所有存储 返回到登录页面
if(e.data.retcode == 99) {
wx.removeStorageSync('token');
wx.removeStorageSync('userId');
wx.reLaunch({
url: '../login/login'
})
}
})
} else {
// token 不存在 未登录过 返回到登录页面
// 执行清空 保证正确
wx.reLaunch({
url: '../login/login'
})
}
});
}
超简单 Promise封装小程序ajax 超好用 以及封装登录的更多相关文章
- 微信小程序与微信公众号同一用户登录问题
微信小程序与微信公众号同一用户登录问题 最近在做微信小程序与微信公众号登录合并的接口.整理相关资料以及个人认识的心得写了这篇文章与大家一起分享. 首先,简单说下我遇到的问题是我们的程序调用微信小程序得 ...
- 微信小程序使用场景延伸:扫码登录、扫码支付
微信小程序使用场景延伸:扫码登录.扫码支付 小程序最适合的使用场景有哪些?相比大家能列举出来很多,但这个场景,大家可能多数没想到_^ 笔者团队近期接到了一个PC项目:转转游戏租号PC官网,该项目要求在 ...
- 微信小程序,超能装的实例教程
序言 开始开发应用号之前,先看看官方公布的「小程序」教程吧!(以下内容来自微信官方公布的「小程序」开发指南) 本文档将带你一步步创建完成一个微信小程序,并可以在手机上体验该小程序的实际效果.这个小程序 ...
- 基于promise对小程序http请求方法封装
原因是我不想每次请求都复制粘贴那么长的请求地址,所以我把前边那一坨请求地址作为基础地址,只传后台给的路由就ok,而且,并不是每次请求都要显示正在加载,这对小程序体验很差,所以,我加了个形参,用来判断是 ...
- 超简单入门Vuex小示例
写在前面 本文旨在通过一个简单的例子,练习vuex的几个常用方法,使初学者以最快的速度跑起来一个vue + vuex的示例. 学习vuex需要你知道vue的一些基础知识和用法.相信点开本文的同学都具备 ...
- 浅析微信支付:微信支付简单介绍(小程序、公众号、App、H5)
本文是[浅析微信支付]系列文章的第二篇,主要讲解一下普通商户接入的支付方式以及其中的不同之处. 上篇文章讲了本系列的大纲,没有看过的朋友们可以看一下. 浅析微信支付:前篇大纲 微信支付是集成在微信客户 ...
- 2015.11.27初识java一集简单的java小程序
JAVA配置环境变量方法: 1.打开我的电脑--属性--高级--环境变量 2.新建系统变量JAVA_HOME 和CLASSPATH 变量名:JAVA_HOME变量值:D:\Java\jdk1.7.0_ ...
- Linux下简单C语言小程序的反汇编分析
韩洋原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 写在开始,本文为因为参加MOO ...
- 【原创】1、简单理解微信小程序
先看下网站的运行方式: 而小程序是这样: what?就这样?是的,就这样.那小程序官方提供的Wafer,还有Wafer2...想太多了,抛弃它们吧.不应当为了解决一个简单的旧问题而去整一个复杂的新问题 ...
随机推荐
- linux4 分区
分区 对硬盘分区:安装操作系统的时候有一个分区过程,新增加硬盘也会涉及到分区,如何给操作系统新增一台硬件设备. 启动操作系统. Home是当前账号的根目录,Computer是/系统根目录. ~是当前账 ...
- jzyz集训 0228
早上考了一波. 出题人是wangyurzee王队长,题目亲民,数据很水(除了第二题).用来做比赛很不错.(尽管我只有第一题A了). 第一题大意是给你n个操作,每个操作是将你手上的数字区间集合与给出的区 ...
- FindBugs规则整理
http://blog.csdn.net/jdsjlzx/article/details/21472253/ 配置FindBugs和常见FindBugs错误 http://blog.csdn.net/ ...
- python学习笔记:第二天(基本数据类型)
Python3 基本数据类型 1.标准数据类型 Python3中有六个标准的数据类型:Number(数字).String(字符串).List(列表).Tuple(元组).Sets(集合).Dictio ...
- Win8风格的WPF按钮
Win8将Windows的风格又进行了一次变革,我还挺喜欢的,有简洁大气的感觉,华丽绚丽的东西看多了之后总会返璞归真寻找简洁大气的感觉才能心情舒畅. 下面就给个WPF下Button的自定义写法. ...
- php封装数据库mysql, mysqli
<?php header("content-type:text/html;charset=utf-8"); class db{ //私有的静态属性 private ...
- js Date 函数方法及日期计算
js Date 函数方法 var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); //获取完整的年份 ...
- Ubuntu 16.04上安装SkyEye及测试
说明一下,在Ubuntu 16.04上安装SkyEye方法不是原创,是来自互联网,仅供学习参考. 一.检查支持软件包 gcc,make,vim(optional),ssh,subversionbinu ...
- 关于yolov3 训练输出值
Region xx: cfg文件中yolo-layer的索引: Avg IOU:当前迭代中,预测的box与标注的box的平均交并比,越大越好,期望数值为1: Class: 标注物体的分类准确率,越大越 ...
- telnet命令发送邮件
下面的例子是用qq的smtp服务器. set localecho 本地回显启用 smtp.qq.com Esmtp QQ Mail Server helo sis smtp.qq.com//服务器返回 ...