使用await async 为什么没有能阻塞js执行

  1. 我在使用RN webview中打开H5页面中进行调试中,
    第一步: 使用rn的方法获取用户信息:
var App = function () {
    // this.cmd = cmd
    this.userInfo = {}
    this.params = {}
    this.reqData = {}

}
//   获取iOS信息
App.prototype.IOSUserInfo = function (fn) {
    // console.log('这行:::IOSUserInfo')
    var obj = {
        callBackFunction: 'receiveUserInfo'
    }
    var str = JSON.stringify(obj)
    var that = this
    return new Promise(function (resolve, reject) {
        window.WebViewBridge && window.WebViewBridge.send('getUserInfo&' + str) // 访问ios用户信息
        window.webkit && window.webkit.messageHandlers.getUserInfo.postMessage(null)
        window.receiveUserInfo = function (data) {
            that.userInfo = JSON.parse(data) // 当前用户的信息
            // console.log(' jieshoudaoxinxi:', that.userInfo)
            resolve(that.userInfo)
            if (fn) {
                fn(that.userInfo)
            }
        }

    })
}

// 继承App
unction CheckUserCardState () {
    this.params =  {}
    this.openCardServerUrl = ''
    this.serviceUrl = ''
    this.userInfo = {}
}

CheckUserCardState.prototype = new App()
CheckUserCardState.prototype.constructor = CheckUserCardState
// 加密请求数据是:

CheckUserCardState.prototype.checkUserState = function (serviceUrl, fn) {
  this.fn = fn && fn
  this.serviceUrl = serviceUrl
  this.init()

}
CheckUserCardState.prototype.init = async function () {

  // this.fn = fn && fn
  // this.serviceUrl = serviceUrl  
  this.userInfo = await this.IOSUserInfo()
  console.log('init::', this.userInfo)
  var result = this.userInfo
  console.log('result:::', result)
//  resolve(result)
// return result
//  await this.encrytReqData()
}

// 在for使用这个init方法:

 // 过滤数据,没有用的数据不显示
    // 比如当前不支持兴义公交等
    // 就不显示出来
    // 并且修改图片地址
    function filterUserCardData(data) {
      var tmp = []
      window.upDateUserDate = function (data) {
        console.log(':::upDateUserDate', data)
      }
      data.forEach(function (item, index) {
        console.log('item.cloudcardCode:::', item.cloudcardCode)
        if (item.cloudcardCode === 'gygj') {
          console.log('gygj:::::123:::')
           var checkUserStateResult = checkUserCardState.init(item['cloudcardServerurl'] + '/webService/')
           console.log('checkUserStateResult:::', checkUserStateResult)
          item.mincloudcardImgurl = '../img/card_guiyang.png'
        } else if (item.cloudcardCode === 'dygj') {
          // checkUserCardState.init(item['cloudcardServerurl'] + '/webService/', upDateUserDate)
          item.mincloudcardImgurl = '../img/card_duyun.png'
        } else if (item.cloudcardCode === 'xygj') {
          item.mincloudcardImgurl = '../img/card_xingyi.png'
        } else if (item.cloudcardCode === 'zygj') {
          item.mincloudcardImgurl = '../img/card_duyun.png'
        }
        tmp.push(item)
      })
      console.log('filterUserCardData::tmp', tmp)
      return tmp
    }

但是使用vConsove 打印出来的日志:

图片描述

阅读 5k
1 个回答

IOSUserInfo 内部第一行就return一个promise对象试试

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题