从角度的可观察操作中返回值?

时间:2018-05-27 12:18:24

标签: javascript angular asynchronous observable synchronous

我在Angular工作,问题似乎是:当我订阅我的组件中的observable时,我可以成功地将console.log()数据分配给我,但是我无法将数据分配给任何前面声明的变量并查看它视图模板。这是代码:我理解在控制台中登录是一个同步过程,而可观察订阅本身是异步的,但是在视图模板中从异步操作输出值似乎是个问题。我已经看到了很多关于堆栈溢出的解决方案,但它没有解决问题,因为它没有解决这类问题。 这是代码的示例

  //The getData function returns an obsverbale
  favoriteShirt;
  
  const gtc = this;
  gtc.getData().subscribe({
          next: (data) => { 
            console.log(data.favShirtFromStore) // this returns an objects with the shirts (this is a sync op)
            gtc.favoriteShirt = data.favShirtFromStore; //this returns undefined <= where the problem is
           },
           error:(err)=>{console.log(`There was an error ${err}`)},
           complete:()=>{console.log("Completed...")}
        });;

1 个答案:

答案 0 :(得分:1)

你为什么不这样用它:

gtc.getData().subscribe(res => { 
    //whatever you want to do with res 
});

此处res是您的函数返回的数据,您可以按照自己的方式使用它,例如将其分配给另一个变量等等......