创建Observable,它在函数完成时进行侦听

时间:2017-05-02 03:58:01

标签: rxjs observable

假设我有一个功能

deleteUser(id){
    if(idExists(id){
       return RxJs.fromPromise(http.request...)
     }else{
       return 'somethingNonAsych'
   }
}

我只想创建一个像这样的Observer:

deleteUser.subscribe( (complete ) => {
   //user has been deleted somehow
}

我不在乎函数是否调用异步方法,我只想在动作返回时订阅。我是Observable创作的新手,所以寻找一些好方法的指导。谢谢!

1 个答案:

答案 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');
相关问题