考虑如下代码块:
constructor(private _http: HttpClient) {
this.fetchUsers(5);
}
employees: any[] = [];
fetchUsers(count: number) {
this._http.get(`https://jsonplaceholder.typicode.com/users`).subscribe(
// need to outsource the logic below along with the function argument (count)
(users: any) => {
for(let i=0; i<count; i++) {
this.employees.push(users[i])
}
console.log(this.employees)
}
);
}
我尝试将subscribe()
内部的逻辑外包给一个单独的方法,如下所示:
constructor(private _http: HttpClient) {
this.fetchUsers(5);
}
employees: any[] = [];
fetchUsers(count: number) {
this._http.get(`https://jsonplaceholder.typicode.com/users`).subscribe(this.handleSubscribedResponse);
}
handleSubscribedResponse = (users: any) => {
for(let i=0; i<count; i++) {
this.employees.push(users[i])
}
console.log(this.employees)
}
这里的问题是:我无法将包含subscribe()
的fetchUsers()
方法的参数传递给subscribe()
上正在调用的handleSubscribedResponse
函数作用域。fetchUsers
函数参数count
未传递给此作用域。我们如何从上述fetchUsers
方法传递参数?
我尝试使用bind()
和apply()
如下,但它是没有用的:
// bind()
this._http.get(`https://jsonplaceholder.typicode.com/users`).subscribe(this.handleSubscribedResponse.bind(this, count))
// apply()
this._http.get(`https://jsonplaceholder.typicode.com/users`).subscribe(this.handleSubscribedResponse.apply(this, count))
我怎样才能得到订阅处理函数的参数值?
1条答案
按热度按时间nqwrtyyt1#
最好的解决方案是,您应该拥有一个具有以下功能的服务
第一个月
在您的组件中,您可以像这样
app.component.ts