如何向具有离子2的服务器发送多个请求?
我有一个sqlite
dB的三个表可以脱机工作。当有活跃的互联网连接时,我想与服务器同步。
我这样做:
发送第一个表的数据 - 如果成功,它将从服务器返回插入的IDs
。因此,我使用新的ID
更新本地数据,并使用第一个表ID
更新第二个表关系。
然后我继续发送第二个表的数据,然后像第一个表那样进行一些操作,然后继续第三个表。
synchData() {
let result = [];
this.userDao.get('TOKEN').then(tkn => {
this.itendao.getAll().then(itins => {
for (let i of itins) {
let event = {
Token: '',
Itin: {
itin: Object(),
relevs: {
relev: Object(),
obs: []
}
}
}
event.Token = tkn;
event.Itin.itin = i;
this.relevedao.geItenReleve(i.IdItin).then(rlvs => {
for (let r of rlvs) {
event.Itin.relevs.relev=r;
this.especesobsDao.getReleveObs(r.CodRel).then(obs => {
event.Itin.relevs.obs.push(obs);
});
}
});
result.push(event);
}
console.log(result);
});
});
如何用离子2做到这一点?
答案 0 :(得分:0)
您可以使用flatMap和subscribe:
来使用实现 this.userDao.get('TOKEN').flatMap(tkn => {
return this.itendao.getAll()
})
.flatMap(itins => {
for (let i of itins) {
let event = {
Token: '',
Itin: {
itin: Object(),
relevs: {
relev: Object(),
obs: []
}
}
}
event.Token = tkn;
event.Itin.itin = i;
}
return this.relevedao.geItenReleve(i.IdItin)
})
.subscribe(rlvs => {
for (let r of rlvs) {
event.Itin.relevs.relev = r;
this.especesobsDao.getReleveObs(r.CodRel).then(obs => {
event.Itin.relevs.obs.push(obs);
});
}
})