我这个check_yundian_consent_agreement的接口,需要登录才能调用,
request.post({
'url': api.consent_agreement,
'data': {
type:2
}
}).then(function (res) {
console.log(res,'res898')
})
但是这个wx.login 的接口,是封装在request请求里的,我不知道如何做,能让wx.login这个接口先调用,然后再调用check_yundian_consent_agreement 的接口,有没有人大概理解我的意思。谢谢
import Promise from './promise';
import util from './util';
export default {
/**
* 默认参数
*/
setDefaults () {
return {
url: '',
data: {},
header: {
'content-type': 'application/x-www-form-urlencoded'
},
dataType: 'json',
responseType: 'text',
}
},
_request (mode, opt) {
const rd3_key= {rd3_key:wx.getStorageSync("session_key")}
const shop_id= {shop_id:wx.getStorageSync("shopinfo").shopid}
const { url, data, header, dataType } = Object.assign({}, this.setDefaults(), mode, opt);
const result = new Promise((resolve, reject) => {
wx.request({
url: url,
data:Object.assign(data,rd3_key,shop_id),
header: header,
method: mode,
dataType: dataType,
success (data) {
// console.log(data)
if(data && data.data.code == 4001){
util.login()
}
if(data && data.data.code == 444){
wx.showModal({
title: '提示',
content: '该店铺暂未启用',
showCancel:false,
success (res) {
if (res.confirm) {
wx.clearStorageSync('shopinfo');
wx.clearStorageSync('wh_id');
wx.redirectTo({
url: '/pages/shoplogin/index',
})
} else if (res.cancel) {
console.log('用户点击取消')
}
}
})
}
if (data && data.statusCode == 200 && data.data) {
resolve(data.data);
} else {
reject(data);
}
},
fail (err) {
reject(err);
}
});
});
return result;
},
geturl(opt){
let pages = getCurrentPages();
//数组中最后一个即当前路由,options是参数
let {options} = pages.pop();
console.log()
},
get (opt) {
return this._request('GET', opt);
},
post (opt) {
return this._request('POST', opt);
}
}
util.login() 这里就是调用了登录
看你的情况是请求失败返回
401
之后才会去请求wx.login
。所以其实算是响应失败了才会去执行的部分。所以你的思路并不是思考应该如何去先执行封装好的
request
方法中的login
方向不要错了。应该是在请求check_yundian_consent_agreement
接口之前提前请求login
,这个就是你自己的业务逻辑了,在需要login
的地方去login
就好了。最简单的就是在
check_yundian_consent_agreement
外包裹好login
操作,完成请求之后再去执行check_yundian_consent_agreement
。