【发布时间】:2018-12-21 15:17:11
【问题描述】:
我每次都尝试从 API 返回所有结果。相反,我的结果各不相同。 for 循环跳过请求并返回返回的随机记录数。有人可以帮忙吗?
我尝试过使用 async 和 await 功能。我也尝试实现 promise.all 但不认为我为 api 请求正确设置它。
// Get all ref codes and group by into an array.
async getAllRefCodes() {
const url = `${this.irRefCodes}`;
const refCodes = [];
let totalPage = 0;
const params1 = new HttpParams().set('size', '20').set('page', `0`);
await this.http.get(`${url}`, {params: params1 }).toPromise().then((data) => {
console.log(data['page'].totalPages);
console.log(data['page'].totalElements);
totalPage = data['page'].totalPages;
});
for (let x = 0; x < totalPage; x++) {
this.getRefCodesByPage(refCodes, url, x);
console.log('Done');
}
await Promise.all(refCodes);
console.log(refCodes);
}
// Getting all ref codes from API per page.
async getRefCodesByPage(refCodes, url, pageNumber) {
const params = new HttpParams().set('size', '20').set('page', `${pageNumber}`);
const promise = new Promise ((resolve, reject) => {
this.http.get(`${url}`, {params: params})
.toPromise().then((refCodeData) => {
const refCode = refCodeData['_embedded'].refCodes;
refCodes.push(...refCode);
});
resolve();
return promise;
});
await Promise.all(promise);
}
希望每次都能获得所有记录。常数
【问题讨论】:
-
有什么理由不使用 Observables 和订阅?
-
好吧,我只想运行一次请求,然后在完成后将其终止。此外,API 一次只返回 20 个结果,所以我在 for 循环中运行它以一次获取所有页面,然后返回一个 JSON 对象。
标签: javascript angular ecmascript-6 es6-promise