方法一
private userTaskList(){
let auth = this.make_basic_auth("kermit","kermit");
this.httpc.get("http://localhost:8080/activiti-rest-test/service/runtime/tasks?assignee="+this.user,{//列出当前用户的任务
headers:{'Authorization' : auth}
}).mergeMap(val=>{
let tasks:Array<any> = val['data'];
let task:any = tasks[tasks.length-1];
let tid:string=task.id;
return this.httpc.post("http://localhost:8080/activiti-rest-test/service/runtime/tasks/"+tid,{ //提交审批的同时 让申请人完成任务
"action" : "complete",
"variables": [
{
"name":"detoxCenterApproval",
"value":this.detoxCenterApproval
}
]
},{
headers:{'Authorization' : auth}
});}).subscribe(val => console.log(val),
error =>{ },
() => {}
);
}
方法二 用promise
let prOrg=this.orgTreeData.reloadPageIfNeed();
let prPerson=this.personTreeData.reloadPageIfNeed();
Promise.all([prOrg,prPerson]).then(s=>{ //数据加载完成后再调用方法
this.orderOrgTreeData = this._convertRows2Subtree();});
将observeble对象转成promise在调用then....then......then........................................链式调用 主要用于下一个方法用到上一个方法获取的值
private getProSysProjectUrl():Promise<boolean>{
return this.toolService.getGlobalContext().toPromise().then(s => {
let val = <any>s;
this.proSysProjectUrl = val.proSysProjectUrl;
return true;
})
}
private listHistoryTasks(){ //列出历史任务实例
this.getProSysProjectUrl().then(s => {
this.httpc.get(this.proSysProjectUrl+"/service/history/historic-task-instances?taskAssignee="+this.user,{
headers:{'Authorization' : this.auth}
}
).subscribe(val => {
let ues:Array<any> = val['data'];
for(let u of ues){
let tempClass = new HistoryTaskField();
tempClass.id = u.id;
tempClass.name = u.name;
tempClass.startTime = u.startTime;
tempClass.endTime = u.endTime;
this.historyTaskFieldClasses.push(tempClass)
}
this.getPages();
this.pageShow();
},
error =>{ },
() => {}
);
}); }