angular - 从订阅 typescript 返回值

标签 angular typescript rxjs angular2-observables

我如何从 Save() 方法返回成功。

public SaveItem() {
 if(save()){ // The goal is to use save method like this
  // Close pop up;
}

public SaveAndNew() {
 if(save()){  // The goal is to use save method like this
  // Create new item;
}


private save() {
 let issuccess = false;

 this.myservice.AddParty(newUserObject)
  .subscribe(data => {   
    if (data['status'].toString() === '1') {
      return issuccess = false;
    } else {
      return issuccess = true;
    }
  },
    (er) => {

      return issuccess = false;
    });
}
  • 如果我有 save(): boolean 它会抛出错误 Must return a value 如果在订阅之外返回 issuccess 它总是返回错误值。

我如何等待保存函数并根据响应返回特定值?

我读过有关回调的内容,它似乎并不优雅,有什么优雅的方法可以做到这一点

callbacks-vs-promises-vs-rxjs-vs-async-awaits

如果是 C# 我会这样做

var isSuccess = await SaveAsync(party);

最佳答案

你可以让你的保存方法返回一个 bool 值的可观察值

public SaveAndNew() {

this.save().subscribe(success =>
{
    if(success)
    {
      // Create new item;
    }
});

private save() : Observable<boolean> {

 return this.myservice
            .AddParty(newUserObject)
            .map(data=> data['status'].toString() === '1')
            .catch(err => Observable.of(false)); 
}

关于angular - 从订阅 typescript 返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48879798/

相关文章:

Angular 2 RC 5 NGModule 传递参数

angular - 在响应式表单中初始化 FormGroup 的位置?

angular - RxJS forkJoin 不发出值

带虚拟滚动的 Angular Material CDK 树组件

Angular FormArray : referencing dynamically added FormControl in template

typescript - 接口(interface)和类型别名之间有语义差异吗?

typescript - Sequelize 模型关联在 typescript 中不起作用

node.js - 发布 observable 使其变得*热门*

angular - 使用 Router.navigate() 后未调用 Observable.subscribe()

javascript - CORS 问题 - Angular/PHP/Apache