鲜肉鲜肉永远不皱 2022-05-04 12:28:30
写的不好,有好的写法大家可以指点一下,感谢
/*
实现 Promise.retry,成功后 resolve 结果,失败后重试,尝试超过一定次数才真正的 reject
*/
// 同步获得Promise状态和值,这样写很low,要是更好的写法大家call我一下
async function checkPromise(getFlag) {
try {
let res = await getFlag();
return { flag: true, value: res };
} catch (e) {
return { flag: false, value: e };
}
}
async function retry(pro, count = 10) {
let result = {
flag: false,
value: null,
},
length = count;
while (count && !result.flag) {
console.log(`调用了${length - count + 1}次`);
result = await checkPromise(pro);
const { flag, value } = result;
if (!flag) {
count--;
}
}
return result.value;
}
Promise.retry = retry;
getFlag = function () {
return Math.random() > 0.5 ? Promise.resolve(1) : Promise.reject(-1);
};
Promise.retry(getFlag, 10)
.then((res) => {
console.log("成功结果", res);
})
.catch((e) => {
console.log("失败结果", e);
});
- 共 1 页
- 1
为什么要用proxy啊,它的作用是什么呢?求解
第 103 题:模拟实现一个 localStorage