typescript 重试时重试逻辑

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了typescript 重试时重试逻辑相关的知识,希望对你有一定的参考价值。

import { Observable } from "rxjs";

let output = document.getElementById("output");
let button = document.getElementById("button");

let click = Observable.fromEvent(button, "click");

function load(url: string) {
    return Observable.create(observer => {
        let xhr = new XMLHttpRequest();

        xhr.addEventListener("load", () => {
            if (xhr.status === 200) {
                let data = JSON.parse(xhr.responseText);
                observer.next(data);
                observer.complete();
            } else {
                observer.error(xhr.statusText);
            }
        });

        xhr.open("GET", url);
        xhr.send();
    }).retryWhen(retryStrategy({ attempts: 3, delay: 1500 }));
}

function retryStrategy({attempts=4,delay=1000}) {
    return function (errors) {
        return errors
            .scan((acc, value) => {
                console.log(acc, value);
                return acc + 1;
            }, 0)
            .takeWhile(acc => acc < attempts)
            .delay(delay);
    }
}

function renderMovies(movies) {
    movies.forEach(m => {
        let div = document.createElement("div");
        div.innerHTML = m.title;
        output.appendChild(div);
    });
}

click.flatMap(e => load("moviess.json"))
    .subscribe(
    renderMovies,
    e => console.log(e),
    () => console.log("complete")
    );

以上是关于typescript 重试时重试逻辑的主要内容,如果未能解决你的问题,请参考以下文章

Polly 在重试时更改查询字符串

重试时客户端连接未正确关闭

空手道:有没有办法在使用重试时禁用日志?

Symfony Messenger:是不是可以在最后一次重试时不抛出异常?

(403) 放置时出现禁止错误,但重试时成功

Spring Data:重试时回滚事务