请问大家关于这个小程序请求接口的问题如何处理比较好?

请问大家关于这个小程序请求接口的问题如何处理比较好?

我这个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

回到顶部