使用承诺检索数据(ionic 和 angular)
Retrive data with promises ( ionic and angular)
开发人员您好我正在尝试从我的 API 中检索数据并在我的函数中使用这些值....这是我在服务中的函数
getetudiant() {
return new Promise((resolve, reject) => {
this.http.get('http://localhost/eportfolio/etudiantprofile.php')
.map(res => res.json())
.subscribe(data => {
resolve(data);
}, error => {
reject(error);
})
})
}
}
这是我对 page.ts 的调用,问题是在函数外调用 etudiantstage 它给我一个空数组
}
getAllStageItems(){
this.etprofile.getetudiant().then((data: any) => {
this.etudiantstage = data
console.log(this.etudiantstage);
});
console.log(this.etudiantstage);
for(let item in this.etudiantstage){
console.log(this.etudiantstage[item].cin);
if(this.etudiantstage[item].cin == this.cin)
this.validerAffiche = true;}
}
第一个 console.log(this.etudiantstage) 有效,但第二个无效 Screen Shot
谁能帮我解决这个问题!
因为它是异步的。
所以,如果你想在从服务器获取数据后处理数据,逻辑应该在 promise/observable 订阅逻辑中。
首先,使服务功能 return 可观察
getetudiant() {
return this.http.get('http://localhost/eportfolio/etudiantprofile.php')
.map(res => res.json()) // should check Http or HttpClient since if you use HttpClient, you do not need to use res=>res.json().
}
和
getAllStageItems(){
this.etprofile.getetudiant().subscribe((data: any) => {
this.etudiantstage = data
console.log(this.etudiantstage);
// <= getting data and execute these logic here
console.log(this.etudiantstage);
for(let item in this.etudiantstage){
console.log(this.etudiantstage[item].cin);
if(this.etudiantstage[item].cin == this.cin)
this.validerAffiche = true;}
});
}
开发人员您好我正在尝试从我的 API 中检索数据并在我的函数中使用这些值....这是我在服务中的函数
getetudiant() {
return new Promise((resolve, reject) => {
this.http.get('http://localhost/eportfolio/etudiantprofile.php')
.map(res => res.json())
.subscribe(data => {
resolve(data);
}, error => {
reject(error);
})
})
}
}
这是我对 page.ts 的调用,问题是在函数外调用 etudiantstage 它给我一个空数组
}
getAllStageItems(){
this.etprofile.getetudiant().then((data: any) => {
this.etudiantstage = data
console.log(this.etudiantstage);
});
console.log(this.etudiantstage);
for(let item in this.etudiantstage){
console.log(this.etudiantstage[item].cin);
if(this.etudiantstage[item].cin == this.cin)
this.validerAffiche = true;}
}
第一个 console.log(this.etudiantstage) 有效,但第二个无效 Screen Shot 谁能帮我解决这个问题!
因为它是异步的。
所以,如果你想在从服务器获取数据后处理数据,逻辑应该在 promise/observable 订阅逻辑中。
首先,使服务功能 return 可观察
getetudiant() {
return this.http.get('http://localhost/eportfolio/etudiantprofile.php')
.map(res => res.json()) // should check Http or HttpClient since if you use HttpClient, you do not need to use res=>res.json().
}
和
getAllStageItems(){
this.etprofile.getetudiant().subscribe((data: any) => {
this.etudiantstage = data
console.log(this.etudiantstage);
// <= getting data and execute these logic here
console.log(this.etudiantstage);
for(let item in this.etudiantstage){
console.log(this.etudiantstage[item].cin);
if(this.etudiantstage[item].cin == this.cin)
this.validerAffiche = true;}
});
}