代码之家  ›  专栏  ›  技术社区  ›  mkHun

在第六章的多重承诺里有承诺吗?

  •  -1
  • mkHun  · 技术社区  · 6 年前

    实际问题 p-table .

    解决方案 :我们必须一次存储所有数据,然后将显示分页。为此,我正在尝试这种方法

    实际上,我正在将ngPrime中的p-Datatable升级为p-table。在p-datatable中,使用分页加载, 但是当我将Datatable升级到table时,没有显示分页。

    所以我试过许下诺言,但还是无法做到每一个诺言。

    我的场景是,首先,我使用一个响应,然后我生成多个响应,并存储数据 进入阵列。最后,我在p-table模板中使用这个数组。下面是我的代码

    allArr = [];
    allTemp = [];
    
    ngOnInit():void{
        this.getVal.then((x)=>{
            this.allArr = x;
        })
    }
    
    getVal = new Promise( (resolve,reject)=>{    
        let resource = "path/name";
        this.log.getList(resource).subscribe(
        rst=>{
            for(var key in rst){
                this.getInfo(key.name, key.value);
            }
            //here I don't know where I have to resolve the promise
    
            //setTimeout(() => {
            //    resolve(this.serviceTemp);
            //},2000);
    
        })
    }
    
    
    getInfo(name, value): void{
        this.log.getDetail(name)
        .subscribe(
            (log: any) => {
                this.allTemp.push(log.detail);
            });
    }
    

    我的模板代码

    <p-table [columns]="tableHeader" [style]="{'width':'100%'}" [value]="allArr" selectionMode="single" [(selection)]="selectedService" [paginator]="true" [rows]="10" [rowsPerPageOptions]="[5,10,25]" 
    [responsive]="true" sortField="serviceName" sortOrder="1" sortMode="multiple">
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   mkHun    6 年前

    allArr = [];
    allTemp = [];
    
    ngOnInit():void{
      getVal();
    }
    allPromise = [];
    
    getVal(){    
        let resource = "path/name";
        this.log.getList(resource).subscribe(
        rst=>{
            for(var key in rst){
                allPromise.push(this.getInfo(key.name, key.value));
            }
            Promise.all(this.allPromise).then(()=>{
                this.allArr = this.allTemp;
            });
        })
    }
    
    
    getInfo(name, value): void{
        let _this = this;
        return new Promise(function(resolve, reject) {
            _this.log.getDetail(name)
            .subscribe(
                (log: any) => {
                    this.allTemp.push(log.detail);
                });
        })
    } 
    
    推荐文章