在示例中, public onRemoving(tag): Observable<any> {
const confirm = window.confirm('Do you really want to remove this tag?');
return Observable.of(tag).filter(() => confirm);
}
做了什么?它是如何工作的?
const confirm = false;
this.mapDlg
.confirm(args)
.subscribe(res => {
if (res != null) {
confirm = true;
}
});
return Observable
.of(tag)
.filter(() => confirm);
我尝试适应我的情况:
.confirm()
但它确实有效,confirm
返回Observable,我抓住了值public onRemoving(tag: any): Observable<any> {
const args = new MultiDlgArgs();
args.type = 'confirmation';
return Observable.create(observer => {
return this.mapDlg
.confirm(args)
.subscribe(res => {
return false;
});
});
}
我还尝试这样做:
public onRemoving(tag: any): Observable<any> {
const args = new MultiDlgArgs();
args.type = 'confirmation';
return new Observable<boolean>(observer => {
this.mapDlg
.confirm(args).map((res) => {
if (res == null) {
observer.next(false);
} else {
observer.next(true);
}
});
}
);
}
我尝试过的另一种方式:
vm.download = function(text) {
var data = new Blob([text], { type: 'text/plain;charset=utf-8' });
FileSaver.saveAs(data, 'text.txt');
};
答案 0 :(得分:2)
你可能会认为Observable是关于恒定的数据流,与Promise相反只会触发一次。 .of() - 创建一个Observable,它发出指定范围内的一系列数字(或任何其他数据)。 docs
你可能需要这样的东西:
this.mapDlg
.confirm(args)
.subscribe(res => {
if (res != null) {
Observable.create((observer)=> {
observer.next(true);
});
}
});
答案 1 :(得分:1)
它创建一个您可以订阅的Observable。
您可以看到该函数返回一个键入为Observable<any>
的变量。
这是我学习创建Observable的方法,而不是Observable.create
方法。