繁体   English   中英

Cancel.on 事件监听器/回调

[英]Cancel .on event listener/callback

我有以下代码

const broadcastTxn = await web3.eth
  .sendSignedTransaction(txn.signed)
  .on('receipt', (r) => console.log('Receipt', r))
  .on('confirmation', (c) => this.handleConfirmation(c, txn));

...

handleConfirmation(c: number, txn: Transaction): void {
  // do some stuff
}

我收到多个confirmations返回,但在第三次之后我想取消继续侦听.on('confirmation')的回调/事件

我尝试将逻辑放入handleConfirmation function 以抛出

handleConfirmation(c: number, txn: Transaction): void {
  // do some stuff
  if (c >= 3) throw new Error('cancelling callback');
}

但这不起作用,它一直被调用。

结束.on('confirmation')侦听器的正确方法是什么?

es2017 & Node 14.9.0

@ThomasSablik 为我指出了正确的方向。 我需要在不使用await的情况下捕获 object 。 然后我可以参考它并在之后使用await 下面的解决方案

const signedTxnListener = web3.eth
  .sendSignedTransaction(txn.signed)
  .on('receipt', (r) => console.log('Receipt', r))
  .on('confirmation', (c) => this.handleConfirmation(c, txn));

await signedTxnListener
...

handleConfirmation(c: number, txn: Transaction): void {
  // do some stuff
  if (c >= 3) signedTxnListener.off('confirmation');
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM