javascript - Promise.resolve() 只返回嵌套数组中的一个元素
问题描述
这是我的代码:
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 函数中,它现在只保留第一个元素,就像片段中的注释一样。
谁能展示我在这里想念的东西?
解决方案
首先,我不确定你为什么将一个承诺包装在一个承诺中......为什么在
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[]));
}
推荐阅读
- javascript - 向下滚动页面时停止 WebGL 3D 动画
- swift - var 让类型转换,反之亦然:
- c# - 滚动时如何始终显示组合框中的特定项目
- android - Android 共享 Intent 的覆盖标题
- react-native - Intellij React Native node_modules 依赖断点未命中
- junit - 在单元测试期间访问 webapp 文件夹中的文件
- mysql - 哪种方法更好地将数据存储在数据库中并建立一对多关系?
- javascript - 有没有办法在angularjs中上传文件时获得音频持续时间
- java - 地图上的标记 - 尝试在空对象引用上调用虚拟方法
- delphi - Delphi 模拟 C++ 枚举?