今天在做一些逻辑业务的时候,发现从steem中取出某位作者所有文章的方法不好调节,因为村长给出的是一个递归的写法,不太好理解(请原谅我水平不高),更不好调节了。所以,最后还是自己写一个实现,用起来更顺手些。
这是村长的递归函数
function getPosts(author, startPermlink = null, limit = 100, posts = []) {
return new Promise((resolve, reject) => {
let beforeDate = new Date().toISOString().split('.')[0];
steem.api.getDiscussionsByAuthorBeforeDate(author, startPermlink, beforeDate, limit, function (err, result) {
//console.log(result);
if (result.length > 1) {
posts = [...posts, ...result];
//用的递归的方法
getPosts(author, result[result.length - 1].permlink, limit, posts)
.then(resolve)
.catch(reject);
} else {
resolve(posts);
}
});
});
}
取出某位作者所有文章的方法无非是一个循环
理解了这种循环的逻辑写起来其实更好理解一些,毕竟大家比较熟悉循环的方法。
getPosts(author, startPermlink, limit, posts) {
let that = this
return new Promise((resolve, reject) => {
let beforeDate = new Date().toISOString().split('.')[0]
that.steem.api.getDiscussionsByAuthorBeforeDate(author, startPermlink, beforeDate, limit, function (err, result) {
//做一次遍历去掉重复的文章
result.forEach(post => {
if (post.permlink != startPermlink) {
that.newposts.push(post)
}
})
resolve(result)
})
})
}
//mounted函数中
let _this = this
async function main(author, startPermlink, limit, posts){
while(true){
let result = await _this.getPosts(author, startPermlink, limit, posts)
//取到最后一篇文章的Permlink,做为下一次查询的起始点
startPermlink = result[result.length - 1].permlink
//如果只能查询到一篇文章,则这是最后一篇了,可以终止查询了
if(result.length == 1){
console.log(888, _this.newposts)
break;
}
}
}
//传入要查询的作者名,初始标签,一次查询的条数,初始化数组
main(this.$store.state.username, null, 5, [])
里面有个关键的接力棒(startPermlink),最后一篇文章作为下一次查询的起始点,不停循环,直到取到最后一篇文章为止。
@tipu curate
Upvoted 👌 (Mana: 0/10)
完了完了,看到程序就头痛,我要失业了😭
!shop
Posted using Partiko Android
放心,你这么厉害的写手失不了业!
你好鸭,lemooljiang!
@julian2013赠送1枚SHOP币给你!
目前你总共有: 28枚SHOP币
查看或者交易
无聊吗?跟我猜拳吧! **石头,剪刀,布~**SHOP币
请到 steem-engine.com.这么说我可以把过去的东西全复制出来?我正想弄出来将有价值的整理下。我想像我这样的电脑盲可能操作不了。
来自于 [WhereIn Android] (http://www.wherein.io)
可以的,试试新的利器,https://lemooljiang.github.io
怎么顺手怎么来
村长,还有很多函数的用法,这要到哪里去查呢?
https://github.com/Stormrose/steem-js/tree/master/doc 这个是目前整理的最好的doc,你可以看看。
感谢村长!