作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是Dart和Flutter的新手,我面临一个障碍。
我正在开发一个 flutter 的应用程序,它使用网络调用, token 身份验证等。我使用Dio和RxDart。问题是,默认情况下,我需要重试每个api调用5次,直到我从服务器获得正确的响应为止(例如,当我调用 token 服务器时,第一次调用响应202,第二次或第三次调用200)。如何重试通话?
这是我的GET方法:
Future _get(String url, {Map<String, dynamic> headers}) async {
var response = await dio.get(url, options:
new Options(headers: headers));
return response.data;
}
Observable get2(String url, {Map<String, dynamic> headers}) {
return Observable.retry(_sourceStream(url, headers: headers) , 5);
Stream Function() _sourceStream(String url, {Map<String, dynamic> headers}) {
return () => Observable.fromFuture(_get(url, headers: headers));
最佳答案
使用 Observable.retry :
Observable.retry(() => Observable.fromFuture(_get(url, headers: headers)), 5)
int retries = 0;
RetryWhenStream(
() => Observable.fromFuture(_get(url, headers: headers))),
(e, s) {
retries+=1;
// if there is more than 5 retries, throw an error
if (retries <= 5) return Observable.just('Lets retry again');
return Observable.error(e);
},
);
关于flutter - 如何在RxDart中重试流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58197726/
我是一名优秀的程序员,十分优秀!