承诺<any>转换为ZoneAwarePromise

时间:2018-05-25 07:43:02

标签: javascript angular typescript promise zone

我在我的项目中使用Angular5。我在api服务中实现了返回promises的方法

method(): Promise<any> {
    return new Promise<any>((resolve,reject) => {
        this.http.get(url).subscribe((response) => {
            resolve(response);
        }, (error) => reject(error));
    });
}

在组件中,需要确保在进一步操作之前已获取所有数据。我试着这样做:

const fetch = [];
fetch.push(this.api.method());
fetch.push(this.api.method1());
fetch.push(this.api.method2());

Promise.all(fetch).then(() => alert('data fetched')); 

它从未达到警戒。所有代码都获得了代码200。

当我暂停与Promise.all一致的执行时,我发现我的承诺已转换为ZoneAwarePromise

当我在.then(s)

中链接它们的嵌套调用时,它运行良好

为什么Promise被转换?如何让Promise.all工作?

1 个答案:

答案 0 :(得分:0)

如何使用forkJoin代替Promise.all呢?做类似的事情:

forkJoin(...fetch.map(yourPromis(url)))