gpt4 book ai didi

javascript - Redux/Thunk 中的递归函数返回 Promise 对象,而不是常规对象

转载 作者:行者123 更新时间:2023-12-01 01:10:10 25 4
gpt4 key购买 nike

我正在从 Action 创建者调用一个函数:

getPostComments(author, permlink)
.then(comments => {...

该函数也会被递归调用以获取所有嵌套注释:

const getPostComments = (author, permlink) => {
return client.database.call('get_content_replies', [author, permlink])
.then(replies => {
return replies.map(r => {
if (r.children > 0) {
return getPostComments(r.author, r.permlink)
.then(children => children)
.then(unpromised => {
r.replies = unpromised
return r;
})
}else {
return r;
}
});
});
}

问题是,第一个调用返回了一个 Promise 对象。例如,一个页面有 3 个评论,其中一个有嵌套评论。没有嵌套注释的注释返回comment对象,有嵌套的注释返回Promise对象。

enter image description here

enter image description here

0:是带有注释的注释。1:仅是一条评论。2:仅是一条评论。

自从我执行 .then(unpromised => { 以来,其中的嵌套注释 (0:) 作为常规对象返回在其上解决对 getPostComments 的递归调用。

enter image description here

但第一次调用getPostComments是一个 Promise 对象(如前两张图片所示),我想要常规数据对象,而不是 Promise 对象。

如何使其成为常规对象?出了什么问题?

谢谢!

最佳答案

看来您的问题只是因为您没有等待 map 的 promise 来解决。 Promise.all 我认为应该修复它(未经测试)。

const getPostComments = (author, permlink) => {
return client.database.call('get_content_replies', [author, permlink])
.then(replies => Promise.all(replies.map(r => {
if (r.children > 0) {
return getPostComments(r.author, r.permlink)
.then(comments => {
r.replies = comments
return r;
})
} else {
return r;
}
})));
}

关于javascript - Redux/Thunk 中的递归函数返回 Promise 对象,而不是常规对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55230586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com