关于#微信小程序#的问题:因为是异步执行,导致第一次执行onRlsb:function () 取不到vname及vidCardNumber的值

//取两个ipnut 的值
faceVerify: function(data) {
  var   vname=data.detail.value.name
  var   vidCardNumber = data.detail.value.idCardNumber
},    

//执行点击button按钮事件,然后人脸识别
onRlsb:function () {
  console.log("b   "+vname+vidCardNumber),
   
wx.startFacialRecognitionVerify({
  name: vname,//姓名
  idCardNumber: vidCardNumber, //身份证号
 
 //人脸识别成功回调通知
    success (res) {
      //console.log("1"+vname)
      console.log("1"+res)
    },
    fail(res) {
   console.log("2"+ vname+vidCardNumber)
    }
   })   
   },

要用到vname的代码放到faceVerify中,如要改下onRlsb的执行位置,放到faceVerify中


        // 定义数据源
        //取两个ipnut 的值
        faceVerify: function(data) {
            var vname = data.detail.value.name
            var vidCardNumber = data.detail.value.idCardNumber

            this.onRlsb(vname,vidCardNumber );////放到这里执行,要改下onRlsb的执行位置,同时传入name,vidCardNumber 
        },
        //执行点击button按钮事件,然后人脸识别
        onRlsb: function (vname,vidCardNumber ) {//增加参数接收name,vidCardNumber 
            console.log("b   " + vname + vidCardNumber),
                wx.startFacialRecognitionVerify({
                    name: vname,//姓名
                    idCardNumber: vidCardNumber, //身份证号
                    //人脸识别成功回调通知
                    success(res) {
                        //console.log("1"+vname)
                        console.log("1" + res)
                    },
                    fail(res) {
                        console.log("2" + vname + vidCardNumber)
                    }
                })
        },

有帮助麻烦点个采纳【本回答右上角】,谢谢~~有其他问题可以继续交流~

异步调用的函数一般都是在当前程序线程执行完才执行的。
所以,异步调用的函数不能用return返回数据,要用“回调函数”的形式传递数据并在回调函数中执行下一步操作。