Как использовать RXJS для обновления устаревших, но активных данных

Код в моем предыдущем ответе можно упростить до:

def test_afunction_throws_exception(self):
    self.assertRaises(ExpectedException, afunction)

И если afunction принимает аргументы, просто передайте их в assertRaises следующим образом:

def test_afunction_throws_exception(self):
    self.assertRaises(ExpectedException, afunction, arg1, arg2)
0
задан BobtheMagicMoose 7 March 2019 в 13:06
поделиться

2 ответа

Я понял, что это не так уж сложно сделать с пользовательским оператором

import { pipe } from 'rxjs';
import { tap } from 'rxjs/operators';


export const tapTimeout = (onTimeout:(()=>any), delay:number) => {
    let timeout = window.setTimeout(onTimeout, delay);
    return pipe(tap(x=> {
        window.clearTimeout(timeout);
        timeout = window.setTimeout(onTimeout,delay);
    }));
}
.
0
ответ дан BobtheMagicMoose 7 March 2019 в 13:06
поделиться

Вам даже не нужен пользовательский оператор для этого, потому что вы можете использовать timeout() и retry():

return database[index].pipe(
  timeoutWith(5 * 60 * 1000),
  retry(),
);

retry() будет повторно подписываться на его источник, если он выдаст ошибку. Тем не менее, все это ожидает, что database[index] обновляется всегда, когда вы подписываетесь на него.

0
ответ дан martin 7 March 2019 в 13:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: