【问题标题】:Promise inside the multiple promises in angular 6?Angular 6 中的多个承诺中的承诺?
【发布时间】:2018-10-30 18:28:28
【问题描述】:

实际问题p-table 中未显示分页。

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

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

我看过了。如果我让 settimeout 分页显示,但我们不能使用 settimeout(因为我没有无进程和响应时间)。

所以我已经尝试过承诺,但我仍然无法做出每一个承诺。

我的情况是首先我使用响应做出一个响应我做出​​多个响应并存储数据 成数组。最后,我在 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">

【问题讨论】:

  • 你能不能直接调用resolve(this.serviceTemp);在 for 循环之后?
  • 没有。它不工作。我得到了解决方案。

标签: angular promise angular6 primeng


【解决方案1】:

找到解决方案。其实我是想全部兑现,内部订阅不是第一个调用函数

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);
            });
    })
} 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-24
    • 2018-06-23
    • 1970-01-01
    • 2015-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多