记录一下promise、异步等待使用案例1
程序员文章站
2022-07-03 09:33:56
...
// 场景: 在桥连接(或类似的异步请求完成)后,才能继续执行查询数据操作。
// 桥连接请求初始可能失败,那么写个轮训,在规定时间内连续请求至成功,超时则不请求。
async function mouted() {
// 场景1:当桥连接失败也要继续执行
try {
await tryToGetBridgeInfo();
}catch(e) {
console.log(e.message, 23232)
}
await query();
// 场景2:当桥连接失败不继续执行
// await tryToGetBridgeInfo();
// await query();
}
mouted();
// 定时器请求获取桥连接至成功,最多请求5次,5次内请求都失败,那么不再请求。
async function tryToGetBridgeInfo() {
return new Promise(async (resolve, reject) => {
let count = 0;
let timer = setInterval(async () => {
count++;
if (count >= 6) {
clearInterval(timer);
return reject(new Error('请求次数超限'))
}
console.log(`当前是第${count}次请求`)
await getBridgeInfo(count);
clearInterval(timer);
resolve();
}, 500);
})
}
// 请求桥连接
async function getBridgeInfo(askCount) {
return new Promise((resolve, reject) => {
console.log('准备请求桥连接')
// 请求成功需要第几次
let linkSuccessNeedCount = 4;
if (askCount < linkSuccessNeedCount) {
return reject('桥连接失败');
}
console.log('桥连接成功')
resolve('桥连接成功')
})
}
// 一般的查询
async function query() {
setTimeout(() => {
console.log("获取到的接口数据", [{
id: 1
}])
}, 0)
}