支付宝接口封装?

这是支付宝的获取定位的接口,我怎么把他封装一下,可以用anysc和await调用 ?

my.getLocation({

type: 1, // 获取经纬度和省市区县数据

success: (res) => {

console.log(res);

},

fail: (res) => {

my.alert({ title: '定位失败', content: JSON.stringify(res) });

},

complete: () => {},

});


回答:

function getLocation() {

return new Promise((resolve, reject) => {

my.getLocation({

type: 1,

success: (res) => resolve(res),

fail: (error) => reject(error),

complete: () => { }

});

});

}

两种方式进行异步调用:

// 使用 async/await 进行异步操作

(async function() {

try {

const loc = await getLocation();

console.log(loc);

} catch (err) {

console.error(err);

}

})();

// 使用 then 方法进行异步操作

getLocation().then(loc => {

console.log(loc);

}).catch(err => {

console.error(err);

});


回答:

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();

以上是 支付宝接口封装? 的全部内容, 来源链接: utcz.com/p/934377.html

回到顶部