首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
TangYuSen
V2EX  ›  微信

写微信小程序遇到的问题,帮忙看看

  •  
  •   TangYuSen · 82 天前 · 967 次点击
    这是一个创建于 82 天前的主题,其中的信息可能已经有所发展或是发生改变。

    思路是这样的,有一个请求基类,req(options),一开始先

    let token = wx.getStorageSync('token')
    

    获取本地缓存的 token,然后 if(token)本地存在 token 的话即开始发送请求,else 进入拿 token,放入缓存的模块,放完再自己调用自己,我在请求的 success 里判断返回 200 才 resolve,但不知道为什么第一次不存在 token,重新获取 token 后自己调用自己,在 resolve 前面 console.log()拿到的数据,在控制台打印出了拿到的值,但就是 resolve()出去,在 then 里拿不到值

    myImage.png

    stillyu
        1
    stillyu   82 天前 via iPhone
    上代码吧
    remon
        2
    remon   82 天前 via Android
    代码不全,看代码加上猜测,你应该进不到 then 里面才对。外面拿到的 promise 是第一次调用的,第二次调用的 promise 在 else 里面就丢弃了
    dcalsky
        3
    dcalsky   82 天前
    ![Screen Shot 2019-11-07 at 11.59.00 PM.png]( https://i.loli.net/2019/11/07/oEwiyvcLWC2jdlP.png)

    加个 resolve 在 else block 里就行了。
    ayase252
        4
    ayase252   82 天前
    你是想
    ```
    req(...args).then((val) => {})
    ```
    val 里面取到值?仔细观察你拿到的是第一次 req 返回的 Promise。如果进了 else,由于你没有返回值,执行完相当于用 undefine resolve。

    要拿到第二次的 Promise,返回你画黄色框的语句就行了,`return req(option)`
    ayase252
        5
    ayase252   82 天前
    @ayase252 不对,用外层的 resolve,来从`req(option).then()`里面拿值....很不优雅的样子
    TangYuSen
        6
    TangYuSen   82 天前
    @ayase252 对,就是你这样的思路,再 val 里取到值后再对数据处理后渲染,刚试了一下 return req(options),还是拿不到值,这样写很不优雅吗,我再 github 参考了别人的封装方法的
    TangYuSen
        7
    TangYuSen   82 天前
    @dcalsky 感谢!!!超级感谢!!!按你说的,就可以了!
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2442 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 23ms · UTC 13:21 · PVG 21:21 · LAX 05:21 · JFK 08:21
    ♥ Do have faith in what you're doing.