angular 的 Nativescript 不执行 Http 请求
Nativescript with angular not performing Http Requests
我正在尝试在我的 nativescript 应用程序上执行 http 请求,但是当调用 http.get() 时,我什么也没得到,没有错误,没有调用 api.
servicos.component.ts
private servicos: Observable<Servico[]>;
constructor(
private servicosService: ServicosService
) {
// Use the component constructor to inject providers.
this.servicos = this.servicosService.listar();
}
ngOnInit(): void {
// Init your component properties here.
}
servicos.service.ts
@Injectable()
export class ServicosService{
constructor(private http: HttpClient){
}
listar(){
return this.http.get<any>(
CONSTANTS.SERVER_URL + '/servicos/'
);
}
}
您正在创建请求,但从未订阅它!您在这里有几个选择:
- 手动订阅并更新
servicos
private servicos: Servico[];
constructor(
private servicosService: ServicosService
) {
// Use the component constructor to inject providers.
this.servicos = this.servicosService.listar().subscribe((response) => this.servicos = response);
}
- 保持相同的代码,但在你的 html 中使用
async
管道(小心!每次显示此屏幕时它都会调用你的 api,并且会调用多次对于多 async
s)
<Label [text]="servico.text" *ngFor="let servico of servicos | async"></Label>
上下文:
HttpClient
总是从 rxjs
.
return Observable
请求
Observable 是冷对象,这意味着它们不会执行任何代码,直到有人 subscribe
访问它。相反,Promise
s 总是在声明时执行。
考虑代码:
const request = new Promise((resolve, reject) => {
console.log("executing");
resolve();
});
setTimeout(() => request.then(() => console.log("success")), 1000)
结果
executing
- 1s wait -
success
现在使用 Observable
:
const request = new Observable((subscriber) => {
console.log("executing");
subscriber.next();
subscriber.complete();
});
setTimeout(() => request.subscribe(() => console.log("success")), 1000)
结果:
- 1s wait -
executing
success
async
管道本质上是在 "rendered" 时调用 subscribe
,在销毁时调用 unsubscribe
,因此您不必自己管理它。
我正在尝试在我的 nativescript 应用程序上执行 http 请求,但是当调用 http.get() 时,我什么也没得到,没有错误,没有调用 api.
servicos.component.ts
private servicos: Observable<Servico[]>;
constructor(
private servicosService: ServicosService
) {
// Use the component constructor to inject providers.
this.servicos = this.servicosService.listar();
}
ngOnInit(): void {
// Init your component properties here.
}
servicos.service.ts
@Injectable()
export class ServicosService{
constructor(private http: HttpClient){
}
listar(){
return this.http.get<any>(
CONSTANTS.SERVER_URL + '/servicos/'
);
}
}
您正在创建请求,但从未订阅它!您在这里有几个选择:
- 手动订阅并更新
servicos
private servicos: Servico[];
constructor(
private servicosService: ServicosService
) {
// Use the component constructor to inject providers.
this.servicos = this.servicosService.listar().subscribe((response) => this.servicos = response);
}
- 保持相同的代码,但在你的 html 中使用
async
管道(小心!每次显示此屏幕时它都会调用你的 api,并且会调用多次对于多async
s)
<Label [text]="servico.text" *ngFor="let servico of servicos | async"></Label>
上下文:
HttpClient
总是从 rxjs
.
Observable
请求
Observable 是冷对象,这意味着它们不会执行任何代码,直到有人 subscribe
访问它。相反,Promise
s 总是在声明时执行。
考虑代码:
const request = new Promise((resolve, reject) => {
console.log("executing");
resolve();
});
setTimeout(() => request.then(() => console.log("success")), 1000)
结果
executing
- 1s wait -
success
现在使用 Observable
:
const request = new Observable((subscriber) => {
console.log("executing");
subscriber.next();
subscriber.complete();
});
setTimeout(() => request.subscribe(() => console.log("success")), 1000)
结果:
- 1s wait -
executing
success
async
管道本质上是在 "rendered" 时调用 subscribe
,在销毁时调用 unsubscribe
,因此您不必自己管理它。