收藏
评论

自认为的云开发下openid最佳开局

这是我获取openId的代码,仅供参考:


app.js代码:

getOpenId: async function () {

    if(this.globalData.openId) {

        return this.globalData.openId

    }

    console.log('getOpenId: storage')

    //老用户重载小程序运行到此

    let openId = wx.getStorageSync('openId')

    if(openId) {

        this.globalData.openId = openId

        return openId

    }

    console.log('getOpenId: cloud')

    //新用户运行到此

    let r = await wx.cloud.callFunction({ name: 'login' })

    wx.setStorageSync('openId', r.result)

    this.globalData.openId = r.result

    return r.result

},


云函数:login:

exports.main = event => { return event.userInfo.openId }


任何页面:

onLoad: async function (options) {

    this.openId = await getApp().getOpenId()

}

最后一次编辑于  2019-03-18
收藏

1 个评论

  • 2019-01-05

    如何改造?

    假如我有一个  exportsomefuncs.js    和一个index.js 需要require('exportsomefuncs.js'),

    这个exportsomefunc.js 是 require('runtime.js'), function is async and await,

    此时:在index.js 我没法使用exportsomefuncs,报错,在index.js 里require('exportsomefuncs.js')

    还是报错,请问你有什么方案?

    2019-01-05
    赞同
    回复 6
    • 老张
      老张
      2019-01-06

      把这个文件引用进来:

      https://github.com/facebook/regenerator/blob/master/packages/regenerator-runtime/runtime.js


      然后在app.js里声明:

      const regeneratorRuntime = global.regeneratorRuntime = require('./lib/runtime.js')

      就可以在小程序端使用async/await了。

      2019-01-06
      回复
    • 2019-01-06

      感谢你的答复,

      1)  我在app.js   倒入runtime.js, 并设成global,  在index.js, 用async await, 很好,

      但要  加一句  const regeneratorRuntime = global.regeneratorRuntime

      2)  另外,在  otherModule.js  我使用 async await  加上 const regeneratorRuntime = global.regeneratorRuntime

         在上面的 index.js , require('otherModule.js'),  并调用 报错:

         

      VM1733:1 thirdScriptError 

       sdk uncaught third Error 

       Cannot read property 'mark' of undefined 

       TypeError: Cannot read property 'mark' of undefined

          at http://127.0.0.1:33033/appservice/general/getUserAllInfo.js:4:64

          at http://127.0.0.1:33033/appservice/general/getUserAllInfo.js:31:2

          at require (http://127.0.0.1:33033/appservice/__dev__/WAService.js:22:26841)

          at http://127.0.0.1:33033/appservice/__dev__/WAService.js:22:26448

          at http://127.0.0.1:33033/appservice/pages/index/index.js:7:13

          at require (http://127.0.0.1:33033/appservice/__dev__/WAService.js:22:26841)

          at <anonymous>:50:7

          at HTMLScriptElement.scriptLoaded (http://127.0.0.1:33033/appservice/appservice?t=1546784373263:1532:21)

          at HTMLScriptElement.script.onload (http://127.0.0.1:33033/appservice/appservice?t=1546784373263:1544:20)


      不知道这个mark 是什么?

      2019-01-06
      回复
    • 老张
      老张
      2019-01-07回复

      刚试了一下,小程序已经原生支持async/await模式了。不需要runtime.js了。


      2019-01-07
      回复
    • 2019-01-07

      非常感谢,确实是,引入module 也没问题,但在“详情“ 要不勾”es6 转es5"

      2019-01-07
      回复
    • 卢索
      卢索
      2019-02-11回复老张

      你说的是服务端吧?

      2019-02-11
      回复
    查看更多(1)
登录 后发表内容