请问大家关于这个小程序请求接口的问题如何处理比较好?
我这个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
。
本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
回答:
不用啊,你自己缕一下代码,你请求post
,它其实就直接执行 _request
里面就直接执行 wx.login
了,感觉不用你自己另外去多余的工作,你请求的 check_yundian_consent_agreement
肯定是在登录后才可以请求的,不然就走到 4001里面去了
request.post({ 'url': api.consent_agreement,
'data': {
type:2
}
}).then(function (res) {
console.log(res,'res898')
})
本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
以上是 请问大家关于这个小程序请求接口的问题如何处理比较好? 的全部内容, 来源链接: utcz.com/p/933876.html