rest 、google map服务的嵌套执行问题
来源:6-3 通用组件之 Rest 模块的建立与逻辑添加

慕尼黑4347840
2019-03-15
项目里,在用户登录成功后,调用REST服务1获取用户信息,获取到对应的司机信息后,再调用 rest 服务2获取关联车辆信息,得到车辆 id 后,执行 google map 的服务,获取当前位置信息,然后调用 rest 服务3去更新车辆位置信息,结果发现 rest3不执行。代码如下:
checkLoginState() {
const self = this;
this.storage.get("loginUserId").then((val) => {
// 如果用户已登录,则根据用户id获取用户个人信息
if (val != null) {
this.notLogin = false;
this.logined = true;
let root: any = HomePage;
this.loginUserId = val;
// 获取当前司机的用户信息
this.rest.getUserInfo(this.loginUserId).subscribe(
resp => {
if (resp.status == 1) {
this.user = resp.data;
// 给资源文件添加一个时间戳后缀,用于清除缓存
this.avatarUrl = resp.data.avatarUrl + "?" + new Date().valueOf();
} else {
super.showToast(this.toastCtrl, resp.msg);
}
}
);
// END 获取当前司机的用户信息
// 获取当前司机的雇员信息
this.rest.getEmployeeInfo(this.loginUserId).subscribe(
res => {
if (res.status == 1) {
this.storage.set("loginCompanyId", res.data.companyId);
this.storage.set("loginEmployeeId", res.data.id);
this.storage.set("loginEmployeeType", res.data.type);
this.storage.set("loginEmployeeName", res.data.name);
console.log("loginCompanyId:" + res.data.companyId);
console.log("driverId:" + res.data.id);
console.log("loginEmployeeName:" + res.data.name);
this.driverId = res.data.id;
// 获取司机所绑定的卡车信息
self.rest.getTruckInfo(this.driverId).subscribe(
res => {
if (res.status == 1) {
self.storage.set("loginTruckNo", res.data.truckNo);
self.storage.set("loginTruckId", res.data.truckId);
console.log("loginTruckNo", res.data.truckNo);
self.truckId = res.data.truckId;
// 获取卡车定位信息
self.geolocation.getCurrentPosition().then((resp) => {
console.log("locate:", resp.coords.longitude, resp.coords.latitude);
console.log(self.truckId);
if (!self.truckId) {
return;
}
// this.positionTracking = setInterval(() => {
console.log("postion:", resp.coords.longitude + "", resp.coords.latitude + "");
// console.log("rest",self.rest);
self.rest.updatePosition(resp.coords.longitude + "", resp.coords.latitude + "", "", self.truckId);
// }, POSITION_INTERVAL);
}, err => {
console.log(err);
super.showToast(self.toastCtrl, "获取当前位置信息失败!")
});
// END 获取卡车定位信息
} else {
super.showToast(self.toastCtrl, res.msg);
}
}
);
// END 获取司机所绑定的卡车信息
} else {
super.showToast(self.toastCtrl, res.msg);
}
}
);
// END 获取当前司机的雇员信息
// if all trip are completed, go to home page
this.nav.setRoot(root);
} else {// 如果未登录
this.avatarUrl = DEFAULT_AVATAR;
this.notLogin = true;
this.logined = false;
this.nav.setRoot(LoginPage);
}
}).catch(error => {
super.showToast(this.toastCtrl, "获取用户登录信息失败");
});
}
写回答
1回答
-
Parry
2019-03-17
是没执行到还是执行错误了啊?
012019-03-26
相似问题