我们是否应该订阅一个 void 函数以及如何订阅
Should we subscribe to a void function and how?
通过 promisses 它很容易成为我可以告诉函数 void 函数的返回类型是 Promise(我希望我是对的)。
我想对可观察量做同样的事情,所以它会像这样:
import {Observable, Subject} from "rxjs/Rx"
...
private personArray:Person[] = PERSONS; ///some persons in other file.
...
///This fucntion remove one person from my service.
public remove(id:number):Observable<void> {
this.personArray = this.personArray.filter(person1=>person1.id !== id);
return Observable.from(); ???
}
- 订阅者不知道第一行是否引发错误。我相信有更好的方法可以做到这一点,我会很高兴看到任何其他支持。
- 如何使此代码工作?
谢谢。
如果您只需要 OnDone 消息,请使用 Observable.empty()
。如果发生错误,您可以使用Observable.throw(...)
:
public remove(id:number):Observable<void> {
try {
this.personArray = this.personArray.filter(person1=>person1.id !== id);
return Observable.empty();
} catch (e) {
return Observable.throw(e);
}
}
或者,您可以使用 .defer()
.如果您的函数抛出异常,则 OnError 将被(自动)抛出:
public remove(id:number):Observable<void> {
return Observable.defer(() => {
this.personArray = this.personArray.filter(person1=>person1.id !== id);
return Observable.empty();
});
}
由于您不能真正使用void
并且类型并不重要,因为没有人会尝试解释任何值,因此只需使用 any
:
public remove(id:number):Observable<any> {
this.personArray = this.personArray.filter(person1=>person1.id !== id);
return Observable.empty<any>();
}
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 如何在JavaScript中将字符串转换为函数引用
- 用嵌套函数和默认函数定义函数
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 无法导出函数expressjs/requestjs中的变量
- 函数参数中的数据与指定变量之间的任何性能差异
- JQuery合并了keyup和focusout两个函数
- ES6构造函数返回基类的实例
- 监视函数从服务返回不起作用,但作用域函数起作用
- 我可以在json对象中添加一个函数吗
- AngularJS:我可以跳过函数参数回调吗
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- 对Javascript感到困惑.布尔函数可以充当void函数
- 可以'我不理解为什么使用JavaScript void函数
- JavaScript 中的 void、eval 和 Function 构造函数有什么区别?
- 读取本地文本文件函数不返回字符串类型,而是返回一个void类型
- 为什么在返回另一个函数调用之前对未知参数调用void
- 我们是否应该订阅一个 void 函数以及如何订阅
- JavaScript 的 void 函数的用例,除了未定义