Mic*_*iño 3 typescript angular5
以下不会将数组输出到控制台。范围不正确???
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Broker } from './broker';
@Injectable()
export class BrokerSurveyService {
brokers: Broker[] = [];
constructor(private http: HttpClient) {
this.getBrokers().subscribe((brokers) => {
this.brokers = brokers;
});
console.log(this.brokers); # Does NOT output to console
}
getBrokers() {
return this.http.get<Broker[]>('http://www.example.com/brokers.json');
}
}
Run Code Online (Sandbox Code Playgroud)
这会将数组输出到控制台,因为它在分配后立即发送到控制台。是this范围不同?我很困惑为什么。
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Broker } from './broker';
@Injectable()
export class BrokerSurveyService {
brokers: Broker[] = [];
constructor(private http: HttpClient) {
this.getBrokers().subscribe((brokers) => {
this.brokers = brokers;
console.log(this.brokers); # Outputs to console
});
}
getBrokers() {
return this.http.get<Broker[]>('http://www.example.com/brokers.json');
}
}
Run Code Online (Sandbox Code Playgroud)
它是correct,
由于服务调用是异步的,因此在调用订阅时数据不会立即到达。相反,当从服务返回响应时,然后调用定义为 subscribe 方法的参数的回调函数。
这就是 Subscribe 中的 console.log 起作用的原因。
如果要在代码中的某处使用数组,请使用另一种方法调用
constructor(private http: HttpClient) {
this.getBrokers().subscribe((brokers) => {
this.brokers = brokers;
useBroker(this.brokers);
});
}
useBroker(brokers:any){
console.log(brokers);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6449 次 |
| 最近记录: |