zoukankan      html  css  js  c++  java
  • angular中因异步问题产生的错误解决方法

    方法一
    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     }
     
     
     
     
  • 相关阅读:
    升级edk2源码的一点补充
    关于Ubuntu系统忘记密码的解决方法合集
    UEFI Shell 下的程序设计
    Windows下EDK2环境的搭建以及经典的程序设计Print Hello World !-----(Linux下的待后续熟练了再更新)
    一个刚入行的BIOS工程师的自我简介
    反爬虫,非标准的json格式解析
    Scrapy+selenium爬取简书全站-爬虫
    Scrapy
    Python 爬取豆瓣电影Top250排行榜,爬虫初试
    Linux(Ubuntu) MySQL数据库安装与卸载
  • 原文地址:https://www.cnblogs.com/Samuel-Leung/p/9333796.html
Copyright © 2011-2022 走看看