У меня есть несколько комментариев по поводу вашего кода:
- вы делаете мутацию, что является плохой практикой, функция getChildren принимает любой тип результата, а затем вносит в него некоторые изменения, например
result.children = []
Избегайте использования any и попробуйте определить тип
в вашем коде, потому что вы делаете мутацию, поэтому вам даже не нужно возвращать результат, потому что исходный объектуже изменено, но, как я упоминал ранее, вам следует избегать мутаций.
Основная проблема, которую шаг 5 выполняет перед шагом 4, состоит в том, что getChildren не возвращает обещание назад, я внес некоторые изменения вВаш код для размещения обещания.
function getChildren(result: any, criteria: any): Promise<any> {
return new Promise((resolve, reject) => {
if (criteria) {
result.children = []
const actions = result
.map(item => item.element)
.map(dbCallToGetChildren)
Promise.all(actions).then(children => { // returns a promise
result.children.push(...children)
return resolve("successfully is processed!")
})
}
reject("invalid criteria!")
})
}