21/10/2022

Lặp lại một công việc gì đó trong 1 khoảng thời gian trong RxSwift

Trong một số tình huống chúng ta cần thử lại một công việc gì đó trong một số lần hay một khoảng thời gian nhất định. Trong RxSwift chúng ta làm điều này thế nào? Đoạn code sau đây sẽ làm lại công việc trong maxRetry lần và khoảng cách giữa hai lần thử lại là retryDelay giây

       observable.retry { errors in
            return errors.enumerated().flatMap{ (index, error) -> Observable<Int64> in
                if error is AppError {
                    let appError = error as! AppError
                    if appError.code == AppError.retryError.code {
                        return index < maxRetry ? Observable<Int64>.timer(retryDelay,
                        scheduler: MainScheduler.instance) : Observable.error(error)
                    }
                }
                return Observable.error(error)
            }
        }
    }
}

Trên đoạn code trên nếu muốn retry lại thì observable cứ quăng error là AppError.retryError thì observable được lặp lại.

Bài viết liên quan



Không có nhận xét nào:

Đăng nhận xét