这是我的代码:
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函数中,则现在只保留第一个元素,就像片段中的注释一样。
有人可以在这里显示我想念的吗?
答案 0 :(得分: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[]));
}