方法一
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........................................链式调用 主要用于下一个方法用到上一个方法获取的值
1 private getProSysProjectUrl():Promise<boolean>{ 2 return this.toolService.getGlobalContext().toPromise().then(s => { 3 let val = <any>s; 4 this.proSysProjectUrl = val.proSysProjectUrl; 5 return true; 6 }) 7 } 8 private listHistoryTasks(){ //列出历史任务实例 9 this.getProSysProjectUrl().then(s => { 10 this.httpc.get(this.proSysProjectUrl+"/service/history/historic-task-instances?taskAssignee="+this.user,{ 11 headers:{'Authorization' : this.auth} 12 } 13 ).subscribe(val => { 14 let ues:Array<any> = val['data']; 15 for(let u of ues){ 16 let tempClass = new HistoryTaskField(); 17 tempClass.id = u.id; 18 tempClass.name = u.name; 19 tempClass.startTime = u.startTime; 20 tempClass.endTime = u.endTime; 21 this.historyTaskFieldClasses.push(tempClass) 22 } 23 this.getPages(); 24 this.pageShow(); 25 }, 26 error =>{ }, 27 () => {} 28 ); 29 }); 30 31 }