SteemJS开发的难与易

in #cn5 years ago

steemjs2.jpg

这两天把SteemJS的开发库啃了个遍,几乎所有的函数都测试了下,过程倒也通畅!JS的函数挺全的,所有的功能几乎都有,这也算是学习和开发中的容易的部分吧。

难的部分自然就是函数的手册确实困难,官方只是罗列了一堆函数,咋用,没说,都是长这样的:

Set Subscribe Callback
steem.api.setSubscribeCallback(callback, clearFilter, function(err, result) {
  console.log(err, result);
});

Set Pending Transaction Callback
steem.api.setPendingTransactionCallback(cb, function(err, result) {
  console.log(err, result);
});

看到这样的手册确实抓瞎,幸好社区中早有人做了一些注释,结合着慢慢啃完,倒也有些心得了。比如,获取某作者的最近的文章列表:

getPosts(){
  let that = this;
  let beforeDate=new Date().toISOString().split('.')[0];
  console.log(111, beforeDate);
  let author = "lemooljiang";
  this.steem.api.getDiscussionsByAuthorBeforeDate(author, null, beforeDate, 100, function(err, result) {
    console.log(567, err, result);
    that.posts = result;
  });
},

使用这个函数可以一次最多能取100篇文章,再多就要拼接了。因为都是Promise函数,用for循环去拼接老是出错,到现在还没解决,这也算是难的部分了。

很多时候不好排错,对于新手更是如此。SteemJS国内的开发社区相对比较少,我也只看到村长有在用,其他人就不知道了。

学习了几天的体会是用SteemJS来开发并不太难,有JS的基础,加上Vue.js的知识就够啰。开发个博客,做个小应用什么的也是妥妥地!

大家用steem最核心的功能也就是发贴、回复和点赞,我会试着把这三者简单地实现,来个精简的博客!

SteemJS + Vue.js + ipfs.js 可以开发出一些更有应用价值的东东,我也在尝试中!

Sort:  

@tipu curate 3
好難搶,難花掉。

有些函数还是少的,比如有个函数可以找到你代理给谁,但是没有函数可以查到谁代理给你。

应该有吧,不过代理、见证人这块的我还没怎么弄!

没有,找了半天都没看到。有个办法可以弄,就是麻烦,所以我一直用行长的api

Posted using Partiko iOS

这样写就可以读取所有的文章了。

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);
            }
        });
    });
}

太感谢村长大人了,这就试下!

村长,在重复取值时第一篇是重复的啊,怎么破

可以加一个逻辑,比如如果startPermlink是post的permlink,就忽略。

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) {
            if (result.length > 1) {
                let newResult = [];
                result.forEach(post =>{
                    if(post.permlink!=startPermlink){
                        newResult.push(post);
                    }
                });
                posts = [...posts, ...newResult];
                getPosts(author, result[result.length - 1].permlink, limit, posts)
                .then(resolve)
                .catch(reject);
            } else {
                resolve(posts);
            }
        });
    });
}

完美!村长牛啊!

盼望你们懂技术的把它研究透,使之理想完美。让我这样的科盲也能玩得转,現在这状况玩不下去了。太没味了。

来自于 [WhereIn Android] (http://www.wherein.io)

贺老师放心,我整得差不多了!

你们好厉害,我也准备啃来着。。。可是

Posted using Partiko Android

学习学习!

Coin Marketplace

STEEM 0.16
TRX 0.15
JST 0.030
BTC 59106.19
ETH 2538.36
USDT 1.00
SBD 2.37