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

Javascript resolve()只返回嵌套数组中的一个元素,javascript,angular,typescript,promise,Javascript,Angular,Typescript,Promise,这是我的密码: 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 =>

这是我的密码:

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);
    });
  });
}
data.items[0]。array1[0]。函数apiGet返回的array2包含5个元素。但如果我将a或b放入resolve函数,它现在只保留第一个元素,就像代码段中的注释一样


有人能告诉我我错过了什么吗?

首先,我不知道你为什么要用承诺来包装承诺。。你为什么要这样做
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[]));
 }
search():承诺{
常量查询={
“操作”:“更新”,
};
返回此.api.apiGet(api.SEARCH\u学生,查询)
。然后((数据)=>数据作为MyModel[]);
}

我把map函数放在那里只是为了显示如果我把它们放在resolve函数中,数据会被更改,甚至
console.log(data.items)
resolve(data.items)
也是一样。但你的代码让我意识到可能就这么简单。我会试试。试试我的代码,我怀疑你会得到同样的结果。。让我知道。我意识到问题来自搜索后调用的函数
initArray1()
,该函数在array2上只保留一个元素,因此您的代码导致相同的结果。但是我真的不知道为什么在调用
initArray1()
之前,我
console.log(result\u from\u search)
,该控制台仍然显示函数
initArray1(result\u from\u search)
的结果。
 search(): Promise<MyModel[]> {
  const query = {
    'action': 'update',
  };

  return this.api.apiGet(API.SEARCH_STUDENT, query)
                        .then((data) => data as MyModel[]));
 }