怎么将这段代码封装成一个promise函数
目标是确保调用此函数judgelocation后可以使用then确保locationavailable(页变量)的值已经被改变,可以被后续代码使用
wx.getLocation({
type: 'wgs84',
isHighAccuracy: true,
highAccuracyExpireTime: 3000,
success: function (res) {
var latitude = res.latitude
var longitude = res.longitude
var horizontalAccuracy = res.horizontalAccuracy
if ((latitude-horizontalAccuracy*0.00000899<latitudemin)&&(latitude+horizontalAccuracy*0.00000899>latitudemin)&&(longitude-horizontalAccuracy*0.00001141<longitudemin)&&(longitude+horizontalAccuracy*0.00001141>longitudemax)){
locationavailabe: true;
} else {
console.log(phone,res.latitude,res.longtitude,res.horizontalAccuracy);
}
},
resolve(locationavailabe);
})
wx.getLocation原本就支持promise调用啊,干嘛还要自己包一层promise?如果是要确保locationavailabe被复制后再执行后续代码,调用的函数加async,然后await等待wx.getLocation执行完毕后赋值
大概下面这样
async doSomething() {
await wx.getLocation({
type: 'wgs84',
isHighAccuracy: true,
highAccuracyExpireTime: 3000,
success: function (res) {
var latitude = res.latitude
var longitude = res.longitude
var horizontalAccuracy = res.horizontalAccuracy
if ((latitude - horizontalAccuracy * 0.00000899 < latitudemin) && (latitude + horizontalAccuracy * 0.00000899 > latitudemin) && (longitude - horizontalAccuracy * 0.00001141 < longitudemin) && (longitude + horizontalAccuracy * 0.00001141 > longitudemax)) {
locationavailabe = true;
} else {
console.log(phone, res.latitude, res.longtitude, res.horizontalAccuracy);
}
},
resolve(locationavailabe);
})
//后续需要使用到locationavailabe的代码
console.log('11', locationavailabe)
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!