【问题标题】:Resolve promise ethersJs解决承诺 ethersJs
【发布时间】:2022-12-05 17:26:00
【问题描述】:

我这里有这段代码,但每当检测到一对新代码时,我都会回来 【对象承诺】

function main(){
    console.log('Starting...')
   contractBsc.on('PairCreated', (token0, token1, pair) =>{
        var erc20COntract0 = new ethers.Contract(token0, erc20Abi, provider) 
        var erc20COntract1 = new ethers.Contract(token1, erc20Abi, provider)  
        let name0 =  erc20COntract0.name()
        var name1 =  erc20COntract1.name()
        var symbol0 = erc20COntract0.symbol()
        var symbol1 = erc20COntract1.symbol()    
        console.log(`Token0: ${name0}, Symbol: ${symbol0}\nToken1: ${name1}, Symbol: ${symbol1}`)
       // return name0,name1,symbol0,symbol1
    }) 
    
  
}
main()

我怎样才能解决承诺,而不是在我的脚本中使用变量 name1、name0 等

【问题讨论】:

    标签: javascript


    【解决方案1】:

    使函数异步并在有承诺的地方添加等待。 我相信这就是您的代码的外观

    contractBsc.on('PairCreated', async (token0, token1, pair) =>{
            var erc20COntract0 = await new ethers.Contract(token0, erc20Abi, provider) 
            var erc20COntract1 = await new ethers.Contract(token1, erc20Abi, provider)  
            let name0 =  await erc20COntract0.name()
            var name1 =  await erc20COntract1.name()
            var symbol0 = await erc20COntract0.symbol()
            var symbol1 = await erc20COntract1.symbol()    
            console.log(`Token0: ${name0}, Symbol: ${symbol0}
    Token1: ${name1}, Symbol: ${symbol1}`)
           // return name0,name1,symbol0,symbol1
        }) 
    

    您还可以通过使用 Promise.all、Promise.allsettled 来优化并发请求。

    【讨论】:

      猜你喜欢
      • 2015-06-24
      • 2019-09-29
      • 1970-01-01
      • 2020-03-16
      • 2018-04-02
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      • 2017-09-27
      相关资源
      最近更新 更多