建议和反馈

请填写你的反馈内容

问答 > 以太坊 > 问答详情

当以太坊智能合约触发事件时如何获得通知10LK

当有人从我的帐户转帐时,事件将获得触发名称

event Transfer(address indexed from, address indexed to, uint to)

现在,我想在智能合约上发生此事件时得到通知。我尝试使用不同的东西,例如过滤器,观看,订阅等。

我还有另一个查询,“过滤”,“订阅”和“观看”到底是做什么的。这些术语之间总是让我感到困惑。有人可以给一个清晰的想法。

注意:我正在使用WEB3JS 1.0.0.26版本。


YYF
2020-09-25
0
请先登陆或注册

分析师2020-09-25

这是一个简单的示例web3js 1.0.0.beta*

function handler (event) {
   console.log(event.returnValues);}function errorCallback (err) {
   console.error(err);}let subscription = contractObj.events.TestEvent().subscription;subscription.on('data', handler).on('error', errorCallback);

退订:

subscription.unsubscribe(function (result) {
   console.log(result)});

在课堂上的用法示例:

class Listener {
  constructor(event, handler) {
    this.subscription = event;
    this.subscription.on('data', handler).on('error', this.errorCallback);
  }
  errorCallback(err) {
    console.log(err);
  }}class Test {
  constructor(contractObj) {
    this.contractObj = contractObj;
    this.createListener();
  }
  createListener() {
    let self = this;
    this.listener = new Listener(this.contractObj.events.TestEvent(), function (event) {
      self.returnValues = event.returnValues;
    });
  }}


投一票
评论(0)
赞赏(0)

求助中

解决了这个问题,预计可以帮助到

  • 0
  • 0
  • 3
  • 7
  • 3
邀请

感谢您的善举,每一次解答会成为新人的灯塔,回答被采纳后获得20算力和相应的LK币奖励