思路是这样的,有一个请求基类,req(options),一开始先
let token = wx.getStorageSync('token')
获取本地缓存的 token,然后 if(token)本地存在 token 的话即开始发送请求,else 进入拿 token,放入缓存的模块,放完再自己调用自己,我在请求的 success 里判断返回 200 才 resolve,但不知道为什么第一次不存在 token,重新获取 token 后自己调用自己,在 resolve 前面 console.log()拿到的数据,在控制台打印出了拿到的值,但就是 resolve()出去,在 then 里拿不到值
1
stillyu 2019-11-07 23:53:43 +08:00 via iPhone
上代码吧
|
2
remon 2019-11-07 23:55:42 +08:00 via Android
代码不全,看代码加上猜测,你应该进不到 then 里面才对。外面拿到的 promise 是第一次调用的,第二次调用的 promise 在 else 里面就丢弃了
|
3
dcalsky 2019-11-08 00:00:04 +08:00
![Screen Shot 2019-11-07 at 11.59.00 PM.png]( https://i.loli.net/2019/11/07/oEwiyvcLWC2jdlP.png)
加个 resolve 在 else block 里就行了。 |
4
ayase252 2019-11-08 00:03:46 +08:00
你是想
``` req(...args).then((val) => {}) ``` val 里面取到值?仔细观察你拿到的是第一次 req 返回的 Promise。如果进了 else,由于你没有返回值,执行完相当于用 undefine resolve。 要拿到第二次的 Promise,返回你画黄色框的语句就行了,`return req(option)` |
5
ayase252 2019-11-08 00:08:06 +08:00
@ayase252 不对,用外层的 resolve,来从`req(option).then()`里面拿值....很不优雅的样子
|