我必须从我的代码块返回一个await函数,现在当await函数被调用并且第一次尝试失败时,我想再重试一次,如果第二次失败..我将显示一条错误消息。
这是我的代码
async makeCall(inputs: myInputs): Promise<Instance> {
const emailOptions: CreateOptions = {
to: inputs.toPhone,
from: this.config.accountPhoneNumber
};
if (inputs.toPhone) {
emailOptions.sendText = inputs.toPhone;
}
return await this.sample.create(emailOptions);
}
我想要这样的东西或有什么建议吗?喜欢 RxJs 的重试
for(var i = 0; i < 1; i++)
{
var result = await this.sample.create(emailOptions);
if(result)
{
// break the loop
return result;
}
}
// if we land here, so the number of retries was exceeded
throw Error("...");
您可以使用这个article代码,它似乎正是您所需要的。它支持重试次数和自定义错误消息。
import './style.css';
let i = 0;
const promiseFn = () => {
const condition = i >= 0;
i++;
return condition ? Promise.reject() : Promise.resolve();
};
const retryWithDelay = async (
fn: any,
retries = 3,
finalErr = 'Retry failed'
) => {
try {
// try
await fn();
} catch (err) {
// if no retries left
// throw error
if (retries <= 0) {
console.log('error');
return Promise.reject(finalErr);
}
//recursively call the same func
return retryWithDelay(fn, retries - 1, finalErr);
}
};
retryWithDelay(promiseFn, 2).then(() => {
console.log('success');
});