Я использую Javascript/Typcript для форматирования значения password
в коллекции объектов PersonModel
. Я выполняю команду Promise
для каждого элемента коллекции.Javascript Promise.all confusion
Я использую Promise.all
, чтобы все обещания заполнились, а затем хотите вернуть отформатированную коллекцию.
Однако во время сборки я получаю сообщение об ошибке.
PersonService.ts
private decryptPersons(persons: PersonModel[]): Promise<PersonModel[]> {
return new Promise<PersonModel[]>(resolve => {
let promises: Array<Promise<string>> = [];
let decryptedPersons: PersonModel[] = [];
for (let i: number = 0; i < persons.length; i++) {
let ciphertext: string = persons[i].password;
promises.push(this.decrypt(ciphertext).then((password: string) => { // <== line 357
persons[i].password = password;
decryptedPersons.push(persons[i]);
}));
}
Promise.all(promises).then(() => {
resolve(decryptedPersons);
});
});
}
private decrypt(value: string): Promise<string> {
return new Promise<string>(resolve => {
this.encrypter.decrypt(value).then((result: string) => {
resolve(result);
});
});
}
Ошибка
ERROR in ./app/pages/service/personService.ts (357,31): error TS2345: Argument of type 'Promise<void>' is not assignable to parameter of type 'Promise<string>'. Type 'void' is not assignable to type 'string'.
Я не эксперт Javascript, поэтому моя структура может меня неправильно. Если кто-нибудь может посоветовать, я был бы признателен.
спасибо. Я дам ему попробовать – Richard