我正在使用一个调用API的库,我正在等待Promise返回接收数组。但是,即使我期望在 ActivityItem 数组中有 2 个元素,有时我只收到其中的第一个元素(首先出现的元素 (Item1)。从我的角度来看,我错误地实现了承诺,我返回它们的方式应该有错误,但我错过了看到它。在这里,我调用应该返回 Promise 的函数:
componentDidMount() {
this.getDataFromKit(ONEDAYINTERVAL).then(result => {
this.sendDataToServer(result); //sending to backend
}).catch(e => console.error);
}
这是一个方法本身:
getDataFromKit(dateFrom) {
return new Promise((resolve) => {
AppleKit.initKit(KitPermissions.uploadBasicKitData(), (err, results) => {
if (err) {
return;
}
AppleKit.getSamples(dateFrom, (err, results) => {
if (err) {
return resolve([]);
}
const newData = results.map(item => {
return { ...item, name: "Item1" };
});
const allData = [...this.state.ActivityItem, ...newData];
this.setState({ ActivityItem: allData });
resolve(allData);
});
// if I delete the code below it will work just fine always grabbing only one item.
new Promise((resolve) => {
AppleKit.getSamplesSecondMethod(dateFrom, (err, results) => {
if (err) {
return resolve([]);
}
const newData = results.map(item => {
return { ...item, name: "Item2" };
});
const allData = [...this.state.ActivityItem, ...newData];
this.setState({ ActivityItem: allData });
resolve(allData);
});
});
});
})
}
这里的主要问题是我猜:我如何从这一个方法返回多个承诺?
慕姐4208626
相关分类