如何 运行 加载程序,直到从 Ionic 4 中的 API 获取响应
How to run the loader until the response is fetched from the API in Ionic 4
我正在我的 Ionic 4 应用程序中工作,我正在从 API 获取响应。我还将加载程序添加到响应来自 API 的首页。
我想 运行 加载程序,直到未从 API 获取响应。
这是我的tab1.page.ts:
import { Component, OnInit } from '@angular/core';
import { ChakapiService } from './../service/chakapi.service';
import { LoadingController, Events } from '@ionic/angular';
import { Storage } from '@ionic/storage';
@Component({
selector: 'app-tab1',
templateUrl: 'tab1.page.html',
styleUrls: ['tab1.page.scss']
})
export class Tab1Page implements OnInit {
detu: any;
newda: any;
constructor(public chakapi: ChakapiService, public loadingController: LoadingController, public events: Events,
private storage: Storage) {
this.detailsfetch('en');
}
ngOnInit() {
}
async detailsfetch($langselect) {
const loading = await this.loadingController.create({
message: 'Please Wait',
duration: 2200,
translucent: true,
});
await loading.present();
this.chakapi.getdetails($langselect).subscribe(data => {
this.detu = data;
this.newda = this.detu.data;
});
return await loading.onDidDismiss();
}
}
在此,我从 API 获取响应,并且我添加了加载器,但加载器在定义的时间内 运行ning。
我想 运行 加载程序,直到未从 API 获取响应。
非常感谢任何帮助。
删除加载程序中的 duration
属性,并在您的服务器调用订阅中添加 loader.dismiss()
async detailsfetch($langselect) {
const loading = await this.loadingController.create({
message: 'Please Wait',
translucent: true,
});
await loading.present();
this.chakapi.getdetails($langselect).subscribe(data => {
this.detu = data;
this.newda = this.detu.data;
loading.dismiss();
}, error => { loading.dismiss(); });
}
这是使用 try catch 块 处理成功和错误响应情况的登录示例。加载程序等待来自服务器的响应,如果收到响应或发生某些错误则停止
async login() {
console.log('login' + this.loginForm.get('username').value);
try {
const loading = await this.presentLoading(); // start loader
const res = await this.authService.login({
username: this.loginForm.get('username').value,
password: this.loginForm.get('password').value
});
this.loadingController.dismiss(); // stop loader on successfull response
} catch (error) {
this.loadingController.dismiss(); // stop loader on some error
if (error === 0) {
this.presentToast('Invalid username password');
} else {
this.presentToast('Some Error Occured, Please try again');
}
}
}
这是加载方法
async presentLoading() {
console.log('starting loading');
const loading = await this.loadingController.create({
spinner: 'circles',
keyboardClose: true,
message: 'Logging you in, Please Wait'
});
return await loading.present();
}
我正在我的 Ionic 4 应用程序中工作,我正在从 API 获取响应。我还将加载程序添加到响应来自 API 的首页。
我想 运行 加载程序,直到未从 API 获取响应。
这是我的tab1.page.ts:
import { Component, OnInit } from '@angular/core';
import { ChakapiService } from './../service/chakapi.service';
import { LoadingController, Events } from '@ionic/angular';
import { Storage } from '@ionic/storage';
@Component({
selector: 'app-tab1',
templateUrl: 'tab1.page.html',
styleUrls: ['tab1.page.scss']
})
export class Tab1Page implements OnInit {
detu: any;
newda: any;
constructor(public chakapi: ChakapiService, public loadingController: LoadingController, public events: Events,
private storage: Storage) {
this.detailsfetch('en');
}
ngOnInit() {
}
async detailsfetch($langselect) {
const loading = await this.loadingController.create({
message: 'Please Wait',
duration: 2200,
translucent: true,
});
await loading.present();
this.chakapi.getdetails($langselect).subscribe(data => {
this.detu = data;
this.newda = this.detu.data;
});
return await loading.onDidDismiss();
}
}
在此,我从 API 获取响应,并且我添加了加载器,但加载器在定义的时间内 运行ning。
我想 运行 加载程序,直到未从 API 获取响应。
非常感谢任何帮助。
删除加载程序中的 duration
属性,并在您的服务器调用订阅中添加 loader.dismiss()
async detailsfetch($langselect) {
const loading = await this.loadingController.create({
message: 'Please Wait',
translucent: true,
});
await loading.present();
this.chakapi.getdetails($langselect).subscribe(data => {
this.detu = data;
this.newda = this.detu.data;
loading.dismiss();
}, error => { loading.dismiss(); });
}
这是使用 try catch 块 处理成功和错误响应情况的登录示例。加载程序等待来自服务器的响应,如果收到响应或发生某些错误则停止
async login() {
console.log('login' + this.loginForm.get('username').value);
try {
const loading = await this.presentLoading(); // start loader
const res = await this.authService.login({
username: this.loginForm.get('username').value,
password: this.loginForm.get('password').value
});
this.loadingController.dismiss(); // stop loader on successfull response
} catch (error) {
this.loadingController.dismiss(); // stop loader on some error
if (error === 0) {
this.presentToast('Invalid username password');
} else {
this.presentToast('Some Error Occured, Please try again');
}
}
}
这是加载方法
async presentLoading() {
console.log('starting loading');
const loading = await this.loadingController.create({
spinner: 'circles',
keyboardClose: true,
message: 'Logging you in, Please Wait'
});
return await loading.present();
}