Javascript 如何解决区域感知承诺问题?

Javascript 如何解决区域感知承诺问题?,javascript,angular,Javascript,Angular,如何防止区域意识的承诺 以下代码正在返回ZoneAwarePromise const versions = await itemDetails.imageSamples.map(({ item, images }) => { const mapped = Promise.all( images.map((image) => this.pushImage(image, `items/${id}/images/`)

如何防止区域意识的承诺

以下代码正在返回
ZoneAwarePromise


    const versions = await itemDetails.imageSamples.map(({ item, images }) => {
      const mapped = Promise.all(
        images.map((image) =>
          this.pushImage(image, `items/${id}/images/`)
        )
      );


      return { item, images };


    });

// here I'm mapping twice. & I suspect this double mapping is causing the Zone Aware Promise

// I tried this way also:


    const versions = await Promise.all( itemDetails.imageSamples.map(({ item, images }) => {
      const mapped = Promise.all(  ---> // this inside mapping is causing zone  aware promise
        images.map((image) =>  
          this.pushImage(image, `items/${id}/images/`) 
        )
      );


      return { item, images };


    }));

以下代码正确返回承诺(即没有任何区域感知承诺)

这是推送映像异步函数

  async pushImage(image, basePath) {
    const imgId = this.angularDatabase.createPushId();
    const route = `${basePath}${imgId}`;
    const imageRef = this.angularFireStorage.ref(route);
    
    return await concat(
      imageRef.put(image.image).snapshotChanges().pipe(ignoreElements()),
      defer(() => imageRef.getDownloadURL())
    )
      .pipe(
        map(
          (url) => (
             { ...image, url }
          )
        )
      )
      .toPromise();
  }
所以两次映射似乎产生了问题

const promises = Promise.all(
      itemDetails.promises.map(({ details, images }) => ({
        details,
        images: Promise.all(
          images.map((image) =>
            this.pushImage(image, `items/${id}/images/`)
          )
        ),
      }))
    );
有人能提出解决办法吗

更新

const promises = Promise.all(
      itemDetails.promises.map(({ details, images }) => ({
        details,
        images: Promise.all(
          images.map((image) =>
            this.pushImage(image, `items/${id}/images/`)
          )
        ),
      }))
    );

如果要映射两次,还需要
Promise.all
两次。(除非你想把承诺的范围缩小)是的。我也试过那样做。仍然得到区域意识的承诺里面!!你说的“里面”是什么意思?谢谢你更新代码。它显示您实际上并没有在任何地方使用
映射的
promise,尤其是您没有等待它。您可以看到这个
const-mapped=promise.all(images.map((image)=>this.pushImage(image,`items/${id}/images/`))正在导致区域感知承诺。。。外部承诺正在正确返回。
const promises=promise.all(itemDetails.promises.map({details,images})=>({details,images:promise.all(images.map((image)=>this.pushImage(image,`items/${id}/images/`)),})