Вам, вероятно, следует использовать Promise.all
, если вы хотите проверить, все ли операции завершились, поэтому вам не нужно отслеживать все асинхронные операции самостоятельно.
async deleteAll(items) {
await Promise.all(
items.map(element => this.deleteOne(element))
);
items.splice(0, items.length); // clear items
}
Ваш код не будетработать, потому что он будет срабатывать при удалении последнего элемента в массиве, который не обязательно будет последним элементом, удаленным из вашей базы данных.
Если вы хотите запустить его последовательно, вместо использования Promise.all
выможно использовать простой for of
цикл
async deleteAll(items) {
for(const item of items)
await this.deleteOne(item);
// I'm done with all the items
items.splice(0, items.length);
}
Не забудьте .catch
любое отклонение:
deleteAll([1,2]).catch(err => console.log(err))
или try/catch
, если оно внутри функции async
,и вы используете await
.