微信免密支付需要实现异步阻塞模式,通过定时双函数实现详细如下:myAsyncFunc:function(){returnnewPromise(function(resolve,reject){setTimeout(function(){console。log(myAsyncFunctiondone!);resolve({data:Hello,World});},2000);});},myAsyncFunc2:function(){returnnewPromise(function(resolve,reject){setTimeout(function(){console。log(myAsyncFunction2done!);resolve({data:Iamcoming});},2000);});},doit:asyncfunction(){varresawaitthis。myAsyncFunc();console。log(res:res。data);varres2awaitthis。myAsyncFunc2();console。log(res2:res2。data);returnres2。datares。data;}, 调用的时候onLoad:function(options){this。doit()。then(res{console。log(onLoad:res);})} 打印结果: 本文中下面的代码直接来源于直接项目中,所以无法直接拷贝使用! 1。调用的函数获取用户信息(newPromise(function(resolve,reject)resolve({data:‘xxxx’});)获取openid信息addbywp20180906getOpenId:function(){returnnewPromise(function(resolve,reject){varopenId;varseKey;登录letthatthis;wx。login({success:function(res){发送res。code到后台换取openId,sessionKey,unionIdif(res。code){发起网络请求wx。request({url:util。url。baseUrlwxprojscode2session,data:{appid:util。appConfig。appId,secret:util。appConfig。secret,jscode:res。code,granttype:util。appConfig。grantType,},header:{ContentType:applicationxwwwformurlencoded},method:POST,success:function(result){if(result。data。code0){seKeyresult。data。msg。sessionkey;openIdresult。data。msg。openid;wx。setStorageSync(util。key。openId,openId);wx。setStorageSync(util。key。seKey,seKey);resolve({data:openId});}else{returnwx。showToast({title:请求失败,icon:none,duration:2000})}},fail:function(res){returnwx。showToast({title:请求失败,icon:none,duration:2000});}})}else{console。log(获取openid失败);}},fail:function(res){console。log(微信登录失败);}})});}, 2。获取地址位置信息(newPromise(function(resolve,reject)resolve({data:‘xxxx’});)functiongetLocation(ck){returnnewPromise((resolve,reject){constappgetApp();wx。getLocation({type:appConfig。locType,success:function(res){varlatres。latitude;varlngres。longitude;log(TAG,latlat,lnglng);if(latundefinedlngundefined)return;wx。request({url:url。locInfo(lat,lng),method:GET,success:function(res){if(res){varcityInfores。data。result。addressComponent;varcityCodeString(cityInfo。adcode)。substring(0,4)。concat(00);varcityNamecityInfo。city;wx。setStorageSync(key。cityName,cityName);wx。setStorageSync(key。cityCode,cityCode);app。globalData。baseInfo。cityCodecityCode;app。globalData。baseInfo。cityNamecityName;resolve({data:cityCode});if(ckck。success)ck。success(cityName,cityCode);}else{ck。fail(res);log(Error,locfail。。。);}},fail:function(res){ck。fail(res);log(Error,res。errMsg);}})},fail:function(res){log(TAG,获取经纬度失败);},})});} 3。获取用户信息(newPromise(function(resolve,reject)resolve({data:‘xxxx’});)getBaseUserInfo(){returnnewPromise(function(resolve,reject){varopenIdwx。getStorageSync(util。key。openId);用户idvarcityCodewx。getStorageSync(util。key。cityCode);if(!cityCode)return;if(openId)return;letthatthis;wx。request({url:util。url。baseUrlwxprogetUserInfo,data:{openId:openId,cityCode:cityCode},header:{ContentType:applicationxwwwformurlencoded},method:POST,success:function(res){console。log(res。data);if(res。data。code0res。data。code1){wx。setStorageSync(util。key。bindStatus,res。data。msg。bindStatus?res。data。msg。bindStatus:0);varbindStatuswx。getStorageSync(util。key。bindStatus);if(bindStatus0)wx。navigateTo({url:。。loginlogin});resolve({data:bindStatus});}else{returnwx。showToast({title:获取用户信息失败,错误码:res。data。code,icon:none,duration:2000})}}})});} 4。异步阻塞函数响应处理(await)异步阻塞操作addbywupeng20180925start:asyncfunction(){获取openidvaropenIdwx。getStorageSync(util。key。openId);用户idif(openId){awaitapp。getOpenId();}获取获取城市代码varcityCodewx。getStorageSync(util。key。cityCode);if(!cityCode){awaitutil。getLocation();}获取绑定状态varbindStatusawaitapp。getBaseUserInfo();获取证书varctfwx。getStorageSync(util。key。ctf);if(util。isNull(ctf)){awaitthis。loadCtf();}returnbindStatus。data;}, 5。在onload中执行调用(this。start()。then(res)onLoad:function(options){varbindStatusapp。globalData。baseInfo。bindStatuswx。getStorageSync(util。key。bindStatus);console。log(TAGonLoad:bindStatus);if(0bindStatus){this。start()。then(res{varcityoptions。citywx。getStorageSync(util。key。cityName);this。setData({loc:{addr:city,}});if(!options。flag)this。loadCtf();this。flushQRCode();this。loadNotify();this。loadAds();this。getPhoneHeight();})}else{varcityoptions。citywx。getStorageSync(util。key。cityName);this。setData({loc:{addr:city,}});if(!options。flag)this。loadCtf();this。flushQRCode();this。loadNotify();this。loadAds();this。getPhoneHeight();}},