思路是这样的,有一个请求基类,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 月 7 日 via iPhone
上代码吧
|
2
remon 2019 年 11 月 7 日 via Android
代码不全,看代码加上猜测,你应该进不到 then 里面才对。外面拿到的 promise 是第一次调用的,第二次调用的 promise 在 else 里面就丢弃了
|
3
dcalsky 2019 年 11 月 8 日

加个 resolve 在 else block 里就行了。 |
4
ayase252 2019 年 11 月 8 日
你是想
``` req(...args).then((val) => {}) ``` val 里面取到值?仔细观察你拿到的是第一次 req 返回的 Promise。如果进了 else,由于你没有返回值,执行完相当于用 undefine resolve。 要拿到第二次的 Promise,返回你画黄色框的语句就行了,`return req(option)` |