收藏
回答

关于promise风格写法赋值问题求教?

const app = getApp()
var isLogin1=0;
Page({
    data: {
        userInfonull,
        isLogin:0
    },
    onLoad(options) {

    },
    chkuid() {
        let id = app.globalData.user_openid
        //登录核对用户ID,用count方法 查到有这么一个cout则认为有这个用户
        wx.cloud.callFunction({
                name'getId',
                data: {
                    id: id
                }
            })
            .then(res => {
                console.log("校对完毕!", res)
                isLogin1= res.result.total
                this.setData({
                    isLogin: res.result.total
                })
            })
            .catch(res => {
                console.log("校对失败!", res)
            })
    },
    login() {
        let isUser = 0
        this.chkuid()
        isUser = isLogin1
        console.log(isUser)
        isUser=this.data.isLogin
        console.log(isUser)
        },
})



老哥们,为啥最后我这两个log出来都是0,为啥chkuid()里的赋值没生效啊?
回答关注问题邀请回答
收藏

2 个回答

  • 茜茜又困了🐽
    茜茜又困了🐽
    2022-07-12

    云函数支持这种写法吗?

    1. chkuid没有返回值,赋值操作自然没有效果
    2. chkuid的.then回调里,能正常打印res吗?你打印下this看看是什么?
    2022-07-12
    有用 1
    回复 18
    • 怂郎
      怂郎
      2022-07-12
      我在chkuid里对全局变量赋值,且生效了。不懂为啥login里的全局变量值为0,我怀疑时先执行完全login了再去执行chkuid
      2022-07-12
      回复
    • 茜茜又困了🐽
      茜茜又困了🐽
      2022-07-12回复怂郎
      你那个isLogin1是干嘛的?没看到定义这个变量啊
      2022-07-12
      回复
    • 怂郎
      怂郎
      2022-07-12回复茜茜又困了🐽
      定义在Page外的,用来测试chkuid里哪种方式能把值赋值出来。
      2022-07-12
      回复
    • 茜茜又困了🐽
      茜茜又困了🐽
      2022-07-12回复怂郎
      知道了 异步问题
      你在login里面加一个setTimeOut模拟下异步赋值
      云函数不是本身就支持async/await嘛
      2022-07-12
      回复
    • 怂郎
      怂郎
      2022-07-12回复茜茜又困了🐽
      新手上路,最近刚在学,谢谢大佬,我去琢磨琢磨这个异步问题
      2022-07-12
      回复
    查看更多(13)
  • 怂郎
    怂郎
    2022-07-12
    const app = getApp()
    var isLogin1=0;
    Page({
        data: {
            userInfonull,
            isLogin:0
        },
    
    
        onLoad(options) {
    
    
        },
        chkuid() {
            let id = app.globalData.user_openid
            //登录核对用户ID
            wx.cloud.callFunction({
                    name'getWxIdChkFun',
                    data: {
                        id: id
                    }
                })
                .then(res => {
                    console.log("校对完毕!", res)
                    console.log("chkuid里的",res.result.total)
                    isLogin1= res.result.total
                    console.log("chkuid里的",isLogin1)
                    this.setData({
                        isLogin: res.result.total
                    })
                    console.log("chkuid里的",this.data.isLogin)
                })
                .catch(res => {
                    console.log("校对失败!", res)
                })
        },
        login() {
            let isUser = 0
            this.chkuid()
            isUser = isLogin1
            console.log('login里的isUser1',isUser)
            isUser=this.data.isLogin
            console.log('login里的isUser2',isUser)
        },
    })
    
    

    2022-07-12
    有用
    回复
登录 后发表内容