Promise.resolve()只返回嵌套数组中的一个元素
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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[]));
}
以上是关于Promise.resolve()只返回嵌套数组中的一个元素的主要内容,如果未能解决你的问题,请参考以下文章