У меня есть рекурсивная функция, которая рекурсивно разрешает сопоставленный массив.
const postCommentsRecursive = (author, permlink) => {
return client.database.call('get_content_replies', [author, permlink])
.then(replies => Promise.all(replies.map(r => {
if (r.children > 0) {
return postCommentsRecursive(r.author, r.permlink)
.then(children => {
r.replies = children;
return r;
})
}else {
return r;
}
})))
}
Но когда я добавил еще одну выборку данных, возврат от then
остается обещанием:
const postCommentsRecursive = (author, permlink) => {
return client.database.call('get_content_replies', [author, permlink])
.then(replies => Promise.all(replies.map(r => {
//NEW CODE START
const votes = client.database
.call('get_active_votes', [r.author, r.permlink])
.then(av => {
return av;
});
r['active_votes'] = votes;
//NEW CODE END
if (r.children > 0) {
return postCommentsRecursive(r.author, r.permlink)
.then(children => {
r.replies = children;
return r;
})
}else {
return r;
}
})))
}
av
- значение массива, отлично. Но когда я добавляю его к объекту из votes
, вместо него появляется Promise
.
Каждый дочерний объект replies
все еще разрешается как значение, но внутри каждого r
, когда я добавляю votes
к r
как r['active_votes'] = votes
, значение, установленное в объекте, равно Promise {<resolved>: Array(1)}
.

Я не могу понять, как получить фактическое Array(1)
в качестве значения, а не Promise
в качестве значения. Как мне получить Array
в качестве значения, а не Promise
?
Спасибо!