Я смотрю, чтобы убедиться, что обещание разрешено в ionic 2. Вот мой код:
ionViewDidLoad() {
this.loader.present();
this.getCourses();//after resolve to do something}
public getCourses(){
this.coursesData.LoadData()
.subscribe(courseList=> {
courseList.forEach(course=>{
var newCourse={
id_course:course.id_course ,
key_course:course.key_course,
course_name:course.course_name ,
course_type:course.course_type ,
start:course.start ,
end:course.end ,
point_course:course.point_course ,
day:course.Day,
class:course.class,
lecture_name:course.lecture_name
}
this.coursesA.push(newCourse);
console.log(this.coursesA);
});
this.loader.dismiss();
// return this.coursesA;
},err=>{
console.log(err);
});
}
я имею this.getCourses()
функция, после того, как это решено, я хочу сделать что-то еще с данными. Это мой провайдер course-data.ts
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/map';
/*
Generated class for the CoursesData provider.
See https://angular.io/docs/ts/latest/guide/dependency-injection.html
for more info on providers and Angular 2 DI.
*/
@Injectable()
export class CoursesData {
public data: any = null;
constructor(public http: Http) {
console.log('Hello CoursesData Provider');
}
LoadData(){
let link = "http://adirzoari.16mb.com/selectCourses.php";
return this.http.get(link)
.map(res => res.json());
}
}
Вы можете сделать обещание цепочки.
public getCourses(){
return new Promise(function(resolve, reject){
this.coursesData.LoadData()
.subscribe(courseList=> {
courseList.forEach(course=>{
var newCourse={
id_course:course.id_course ,
key_course:course.key_course,
course_name:course.course_name ,
course_type:course.course_type ,
start:course.start ,
end:course.end ,
point_course:course.point_course ,
day:course.Day,
class:course.class,
lecture_name:course.lecture_name
}
this.coursesA.push(newCourse);
console.log(this.coursesA);
});
this.loader.dismiss();
resolve();
},err=>{
console.log(err);
reject(err);
});
});
}
ionViewDidLoad() {
this.loader.present();
var getCoursesPromise = this.getCourses();
var nextStepPromise = getCoursesPromise.then(function(result){
//do what you want to do after this.getCourses
}).catch(function(reject){
console.log(reject);
});
}
Вам нужно будет решить, когда вы захотите вызвать resolv для возврата объекта обещания.
Других решений пока нет …