replanIfFailed是Think的Yuka js库中的一个函数。该函数用于在执行失败时重新计划执行某个行为。
replanIfFailed(selector, action, maxAttempts, interval, [options])
selector
:类型为字符串。选择器用于定位行为执行的目标。action
:类型为函数。用于执行的行为函数。该函数可以返回一个Promise。maxAttempts
:类型为数字。在放弃之前的最大尝试次数。interval
:类型为数字。每次尝试之间的时间间隔(毫秒)。options
:类型为对象,可选参数。目前只在调试时使用。此函数将返回一个Promise,该Promise将解析为执行成功时的结果。如果达到最大尝试次数并且仍然失败,则Promise将被拒绝,拒绝参数为最后一次尝试执行的错误。
下面是一个使用replanIfFailed函数的示例,该函数每隔5秒钟尝试一次加载一张图片,最大尝试次数为3次。如果所有尝试均失败,则Promise将被拒绝。
const img = document.querySelector('#img');
replanIfFailed('#img', () => {
return new Promise((resolve, reject) => {
img.onload = () => resolve(img);
img.onerror = reject;
img.src = 'image.jpg';
});
}, 3, 5000).then(() => {
console.log('Image loaded successfully');
}).catch((error) => {
console.error('Failed to load image', error);
});