Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 在第六章中的多重承诺中的承诺?_Angular_Promise_Angular6_Primeng - Fatal编程技术网

Angular 在第六章中的多重承诺中的承诺?

Angular 在第六章中的多重承诺中的承诺?,angular,promise,angular6,primeng,Angular,Promise,Angular6,Primeng,实际问题:分页未显示在p表中 解决方案:我们必须一次存储所有数据,然后显示分页。为此,我正在尝试这种方法 实际上,我正在将ngPrime中的p-Datatable升级为p-table。在p-datatable中,正在加载分页, 但是,当我将Datatable升级到table时,没有显示分页 我看着它。如果我使settimeout页面显示,但是我们不能使用settimeout(因为我不知道no进程和Responsee时间) 所以我尝试过承诺,但仍然无法做出每一个承诺 我的场景是,首先我使用响应生成

实际问题:分页未显示在
p表中

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

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

我看着它。如果我使settimeout页面显示,但是我们不能使用settimeout(因为我不知道no进程和Responsee时间)

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

我的场景是,首先我使用响应生成一个响应,然后生成多个响应并存储数据 进入阵列。最后,我在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">

找到了解决方案。实际上,我想保证所有的,对于内部订阅,而不是第一个调用函数

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

您可以直接调用resolve(this.serviceTemp);在for循环之后?不,它不工作。我找到了解决办法。