Я пытаюсь получить счета для нескольких клиентов, используя машинопись:
У меня есть класс Server, который обрабатывает запросы к серверу и предоставляет класс getBills
, который возвращает Promise<Bill[]>
:
class Server {
constructor(hostname?: string) {
hostname = hostname || "";
}
getBills(customer: Customer): Promise<Datapoint[]> {
const apiEndPoint = new URL("/API/Bills");
let parameters = { customer: customer.name};
//Fetch official doc
//https://github.com/whatwg/fetch/issues/56
Object.keys(parameters).forEach(key => apiEndPoint.searchParams.append(key, parameters[key]));
return fetch(apiEndPoint.toString())
.then(response => {
if (!response.ok) {
throw new Error(response.statusText)
}
return response.json()
})
}
}
Я хотел бы запросить счета для нескольких клиентов и вернуть карту для дальнейшей обработки (и сохранить все это асинхронно, Promise<Map<Customer, Bill[]>>
, но я борюсь с этим шагом.
Что у меня есть:
getBills(): Promise<Map<Customer, Bill[]>> {
let server = this.context.server;
let resultMap = new Map<Customer, Bill[]>();
let promises = [];
for (let customer of this.customers) {
promises.push(
server.getBills(customer).then(result => resultMap.set(customer, result))
);
}
Promise.all(promises).then(return resultMap);
}
Но он не компилируется, так как пытается вернуть саму карту, а не Обещание.
Iпытался использовать
Promise.all(promises).then(return Promise.resolve(resultMap));
, но он тоже не работает.
Не могли бы вы указать мне правильное направление?