簡體   English   中英

當以太坊智能合約觸發事件時如何獲得通知

[英]How to get notified when an event triggers on ethereum smart contract

當有人從我的帳戶轉帳時,事件將獲得觸發名稱

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

現在,我想在智能合約上發生此事件時得到通知。 我嘗試了一些不同的東西,例如過濾器,監視,訂閱等。

我還有另一個查詢,“過濾”,“訂閱”和“觀看”到底是做什么的。 我總是對這些術語感到困惑。 有人可以給一個清晰的想法。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM