请选择 进入手机版 | 继续访问电脑版

图文精华

【智能合约实战】-23-login的js实现

2019-12-20 15:59| 发布者: Amuro| 查看: 47| 评论: 0

ApiService.js-4

 

Class ApiService{

/**

---------------------------------------------------------------------------

登录参数:用户名,私钥

----------------------------------------------------------------------------

*/

     Static login{username,key} ) {

        localStorage.setItemcardgame_account username

        localStorage.setItemcardgame_key key

 

return new promise((resolve,reject) => {

   takeAction(login, {username:username})

       .then(()=> {

             resolve()

       })

       .catch(err => {

                  localStorage.setItemcardgame_account

          localStorage.setItemcardgame_key

          Reject(err)

        })

    })

}

}

 

Promise根据函数的调用情况返回两个函数,看是解决还是拒绝。之后会有两个结果,即.then,就返回resolve,否则.catch,就失败,则移除这两项。

 

这段代码主要是通过promise这个函数来实现。如果不太了解这个函数,可以到zh.javascript.info这个网站来查看相关教程。这个教程写得很好,推荐大家学习研究。

 

到这里,第三卷的学习要告一段落了,我们总结一下,目前学习了组件界面的实现,以及apiservice如何连接到区块链。接下来我们将学习前段的第二个部分。

 

最后我们把整个代码放在一起回顾一下。

 

import {ApiJsonRpcRpcError} from ’eosjs’;

 

import {JsSignatureProvider}from ‘eosjs/dist/eosjs-jssig’;

 

 

 

//调用合约中的ActiondataValue是参数

 

async function takeAction (action,dataValue) {

 

const key = localStorage.getItem(‘cardgame_key’)

 

const rpc =new JsonRpc(process.env.REACT_APP_EOS_HTTP_ENDPOINT)

 

const signatureProvider = new JsSignaturePiovider([key])

 

const api = new Api ({rpc,signatureProvider,textDecoder: new TextDecoder(),

 

textEncoder:new TextEncoder()})

 

}

 

 

 

class ApiService {

 

}

 

export default ApiService

 

 

 

try

 

 

 

let result =await api.transact({

 

      actions[{

 

                accountprocess.env.REACT_APP_EOS_CONTRACT_NAME,

 

                name:action,

 

                authorization:[{

 

                    actor:localStorage.getItem(‘cardgame_account’),

 

                    permission:’active’,

 

                }],

 

                Data:dataValue

 

              }]

 

},{

 

  blocksBehind:3,

 

  ExpireSeconds:30

 

}

 

   )

 

  Return result

 

}catch(error){

 

     throw(error)

 

}

 

Class ApiService{

/**

---------------------------------------------------------------------------

|登录参数:用户名,私钥

----------------------------------------------------------------------------

*/

     Static login{username,key} ) {

        localStorage.setItem‘cardgame_account’ username

        localStorage.setItem‘cardgame_key’ key

 

return new promise((resolve,reject) => {

   takeAction(‘login’, {username:username})

       .then(()=> {

             resolve()

       })

       .catch(err => {

                  localStorage.setItem‘cardgame_account’

          localStorage.setItem‘cardgame_key’

          Reject(err)

        })

    })

}

}

 


鲜花

握手

雷人

路过

鸡蛋
精彩评论

沙发等你来坐!

发布文章
返回顶部