Promise.resolve()只返回嵌套数组中的一个元素

问题描述 投票:0回答:1

这是我的代码:

search(): Promise<MyModel[]> {
  const query = {
    'action': 'update',
  };

  return new Promise((resolve, reject) => {
    this.api.apiGet(`${API.SEARCH_STUDENT}`, query).then((data) => {
      const a = data.items.map(i => i);
      const b = data.items.map(i => i);
      console.log(a.array1[0].array2.length);  // 1
      console.log(b.array1[0].array2.length);  // 5
      resolve(a);
    }, (error) => {
      reject(error);
    });
  });
}

MyModel类:

class MyModel {
  ...
  array1: [{
    array2: []
  }]
}

函数apiGet返回的data.items [0] .array1 [0] .array2包含5个元素。但是,如果我将a或b放入resolve函数,它现在只保留第一个元素,就像片段中的注释一样。

有人能展示我想念的吗?

javascript angular typescript promise
1个回答
0
投票

首先,我不确定你为什么要在承诺中包含一个承诺。为什么当this.api.apiGet返回一个承诺时你需要这样做。

另外,你为什么要映射?我打赌,如果你console.log(data.items)相同的数据会回来。我想你刚刚对你的代码感到困惑。整理代码应该为您解决所有这些问题。

我会做类似下面的事情,现在你每次打电话给search都会得到你想要的所有数据。

 search(): Promise<MyModel[]> {
  const query = {
    'action': 'update',
  };

  return this.api.apiGet(API.SEARCH_STUDENT, query)
                        .then((data) => data as MyModel[]));
 }
© www.soinside.com 2019 - 2024. All rights reserved.