下面的代码显然不起作用。我试图将从rxjs observable函数检索到的变量传递给另一个函数。但是,我不知道该怎么做,我找不到合适的例子。
因此,例如下面的代码,Aborted (core dumped)
成功地从JSON中检索this.username。但是,我不知道如何将它传递给getUserInfo()函数。
我总是未定义。
getUserName()
答案 0 :(得分:0)
这可能不是你问题的直接答案,也许它可以帮助你,
我假设您想在组件中的某个地方使用用户数据,而且很可能是模板 - 在这种情况下,使用@Injectable()
export class UserService {
userData$ = new BehaviorSubject<IUserData>();
constructor(private http: Http) {
this.userData$
.subscribe(data => doSomeStuffWheneverUserDataUpdates(data));
}
fetchUserData(){
this.http.get("http://localhost:1337/user")
.map(res => res.json())
.subscribe(
data => this.userData$.next(data),
err => console.log(err)
);
}
}
存储和访问获取的数据通常很有帮助,您可以这样做像这样:
class MyComponent {
constructor(private userService: UserService) {
userService.fetchUserData();
// optionally you could subscribe here to
// userService.userData$ to do some action whenever
// the userData updates, just don't forget to
// unsubscribe when the component is destroyed
}
}
...您可以使用组件中的某个位置:
<div>UserName: {{(userService.userData$ | async)?.username}}</div>
...并在模板中:
SELECT CreationDate,Id,AccountId,Reputation
FROM USERS
WHERE Reputation>200 AND CreationDate >= '2016-01-01 00:00:00' AND CreationDate <'2017-01-01 00:00:00'
ORDER BY Reputation
答案 1 :(得分:0)
由于在实现JSON订阅之前调用了getUserInfo()函数,因此您变得不确定。
您可以向getUserInfo(data)添加一个参数,然后在getUserName()中添加以下代码行-> this.getUserInfo(data);
之后,您应该看到显示信息的console.log。