29 lines
913 B
GDScript
29 lines
913 B
GDScript
static func retry_(retry_count : int = -1) -> Callable:
|
|
# """Repeats the source observable sequence the specified number of
|
|
# times or until it successfully terminates. If the retry count is
|
|
# not specified, it retries indefinitely.
|
|
#
|
|
# Examples:
|
|
# >>> var retried = GDRx.op.retry()
|
|
# >>> var retried = GDRx.op.retry(42)
|
|
#
|
|
# Args:
|
|
# retry_count: [Optional] Number of times to retry the sequence.
|
|
# If not provided, retry the sequence indefinitely.
|
|
#
|
|
# Returns:
|
|
# An observable sequence producing the elements of the given
|
|
# sequence repeatedly until it terminates successfully.
|
|
# """
|
|
var retry = func(source : Observable) -> Observable:
|
|
var gen : IterableBase
|
|
if retry_count < 0:
|
|
gen = InfiniteIterable.new(source)
|
|
else:
|
|
var _gen_lst = [] ; for __ in range(retry_count): _gen_lst.append(source)
|
|
gen = GDRx.to_iterable(_gen_lst)
|
|
|
|
return GDRx.obs.catch_with_iterable(gen)
|
|
|
|
return retry
|