假设我有一个功能
deleteUser(id){
if(idExists(id){
return RxJs.fromPromise(http.request...)
}else{
return 'somethingNonAsych'
}
}
我只想创建一个像这样的Observer:
deleteUser.subscribe( (complete ) => {
//user has been deleted somehow
}
我不在乎函数是否调用异步方法,我只想在动作返回时订阅。我是Observable创作的新手,所以寻找一些好方法的指导。谢谢!
答案 0 :(得分:1)
可以使用Observable.of(...)或Observable.from(...)
将JavaScript值(字符串,对象,...)转换为可观察对象function idExists(id) {
return id === 'exist' ? true : false;
}
function deleteUser(id) {
if (idExists(id)) {
return RxJS.Observable.fromPromise(Promise.resolve('delete user'));
} else {
return RxJS.Observable.of('user not exist');
}
}
deleteUser('exist').subscribe((value) => {
console.log(value);
})
deleteUser('not exist').subscribe((value) => {
console.log(value);
})
Observable.defer(...)可以用来创建可观察的懒惰。
function idExists(id) {
return id === 'exist' ? true : false;
}
function deleteUser(id) {
Observable.defer(() => {
if (idExists(id)) {
return RxJS.Observable.fromPromise(Promise.resolve('delete user'));
} else {
return RxJS.Observable.of('user not exist');
}
}).subscribe((value) => {
console.log(value);
})
}
deleteUser('exist');
deleteUser('not exist');