如何解决RXJS和打字稿:有条件地执行服务器和客户端代码的工作
我的要求是提供一个使用各种条件来确定是否可以编辑对象的功能。
这些条件可以同时出现在服务器端和客户端上。
其中某些条件应中止进一步验证的执行并返回值。
我将尝试使用伪代码使该过程易于理解。
也许已经有一种执行此类任务的模式。
isEditable(): Observable<boolean> {
return serverSideCondition.pipe(
switchMap(editable => {
if (editable)
{
return clientSideCondition;
}
return of(false); // Should abort furhter conditions ...
}),switchMap(editable => {
if (editable)
{
return clientSideAskTheUser;
}
return of(false); // Should abort furhter conditions ...
})
);
}
谢谢
解决方法
如果您不希望通过所有运算符传递false
值,则可能引发错误并在以后捕获它。
isEditable(): Observable<boolean> {
return serverSideCondition.pipe(
throwIfFalsy(),switchMap(editable => clientSideCondition.pipe(throwIfFalsy())),switchMap(editable => clientSideAskTheUser.pipe(throwIfFalsy())),// other operators ...
catchError(error => of(error))
);
}
throwIfFalsy() {
return tap(value => {
if (!value) {
throw value
}
})
}
```
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。