这是支付宝的获取定位的接口,我怎么把他封装一下,可以用anysc和await调用 ?
my.getLocation({
type: 1, // 获取经纬度和省市区县数据
success: (res) => {
console.log(res);
},
fail: (res) => {
my.alert({ title: '定位失败', content: JSON.stringify(res) });
},
complete: () => {},
});
这是支付宝的获取定位的接口,我怎么把他封装一下,可以用anysc和await调用 ?
my.getLocation({
type: 1, // 获取经纬度和省市区县数据
success: (res) => {
console.log(res);
},
fail: (res) => {
my.alert({ title: '定位失败', content: JSON.stringify(res) });
},
complete: () => {},
});
const getLocationAsync = (params) => {
return new Promise((resolve, reject) => {
my.getLocation({
...params,
success: (res) => resolve(res),
fail: (err) => reject(err)
});
});
}
try {
const res = await getLocationAsync({ type: 1 });
console.log(res);
} catch (err) {
my.alert({ title: '定位失败', content: JSON.stringify(res) });
}
如果想 Promise 化的函数比较多,还可以继续抽象:
const promisify = (func) => {
return (params) => {
new Promise((resolve, reject) => {
func({
...params,
success: (res) => resolve(res),
fail: (err) => reject(err)
});
});
}
}
const getLocationAsync = promisify(my.getLocation);
const balabalaAsync = promisify(my.balabala);
const res1 = await getLocationAsync({ type: 1 });
const res2 = await balabalaAsync();
9 回答1.7k 阅读✓ 已解决
6 回答1.5k 阅读
3 回答1.4k 阅读✓ 已解决
4 回答1.3k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
3 回答1.1k 阅读
3 回答1.3k 阅读✓ 已解决
两种方式进行异步调用: