You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JS的splice替换push解决Promise.all异步顺序问题

问题说明

页面初始化时会自动加载5个Promise,通过Promise.all执行,但Promise的执行顺序是随机的。目前每个数据获取函数都用push方法向数组中添加数据,导致无法确定各函数对应的数据在数组中的位置,需要将push替换为splice来指定数据的插入位置。

初始化加载Promise的代码

ngOnInit(): void {
  Promise.all([this.getData1(), this.getData2()]).then(values => {
      console.log(values)
      this.processing = true;
    }).catch(reason => {
      console.log('error get data', reason)
    });
}

数据获取函数示例(其余函数逻辑一致)

public getData1() {
    return new Promise((resolve, reject) => {
        this.createService.getServiceData1().subscribe(
            (response: any) => {
                let customFieldOption: CustomFieldOption = new CustomFieldOption();
                this.opcionServicio = response;
                this.opcionesServicio.push(this.opcionServicio);
                this.servicio.push(this.opcionesServicio[0].ticket_field.title)
                customFieldOption.id = this.opcionServicio.ticket_field.id;
                customFieldOption.name = this.opcionServicio.ticket_field.title;
                this.customFieldOptions.push(customFieldOption);
                resolve(true);
            },
            (error) => {
                console.log(error);
                reject(true);
            }
        );
    });
}

public getData2() {
    return new Promise((resolve, reject) => {
        this.createService.getServiceData2().subscribe(
            (response: any) => {
                let customFieldOption: CustomFieldOption = new CustomFieldOption();
                this.opcionServicio = response;
                this.opcionesServicio.push(this.opcionServicio);
                this.servicio.push(this.opcionesServicio[0].ticket_field.title)
                customFieldOption.id = this.opcionServicio.ticket_field.id;
                customFieldOption.name = this.opcionServicio.ticket_field.title;
                this.customFieldOptions.push(customFieldOption);
                resolve(true);
            },
            (error) => {
                console.log(error);
                reject(true);
            }
        );
    });
}

内容的提问来源于stack exchange,提问作者ALAIN TORRES

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 06:15:43