javascript - 如何在松露迁移脚本中使用松露部署程序嵌套 promise

标签 javascript solidity truffle

我正在使用 truffle deployer 来部署我的 solidity 合约:

module.exports = function(deployer, network) {
  ...
}

我想在此迁移过程中将一些数据存储在链上。通过使用 promise 回调参数并调用合约上的一些函数,数据的基本存储正常工作。但我需要做一些更复杂的事情,如以下代码片段中所述:

deployer.deploy(A).then(instance => {
  instance.addB(id, some params ...).then(result => {
    // result is not the added B -> using getB() to load B
    
    instance.getB(id).then(instanceB => {
      instanceB.addC(id, some params ...);
    })
  });
})

问题是内部函数没有正确执行。 instance.addB() 确实将 B 正确存储到链中。但 C 从未存储到链中,我不明白为什么。 此外,如果我将 console.log('some text') 添加到内部函数,它不会打印到控制台。

有人知道如何解决这个问题吗?

最佳答案

使用“await/async”代替 promise 回调。

关于javascript - 如何在松露迁移脚本中使用松露部署程序嵌套 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65098490/

相关文章:

ethereum - 当我从 remix 部署合约时,geth 显示 "contract creation code storage out of gas"

casting - Solidity: 错误:请将数字作为字符串或 BN 对象传递以避免精度错误

javascript - 使用 Web API 存储创建 'truly global' 整数变量

javascript - 匹配括号的正则表达式

javascript - 更新合约状态变量后交易失败

npm - 必须为 webpack 安装一个 CLI - 无法运行 webpack

reactjs - 如何修复 gyp ERR!使用 npm 构建错误?

truffle - 如何配置 truffle 以连接到 RSK 测试网公共(public)节点?

javascript - 替换嵌入 iframe 中的视频

javascript - 有没有办法强制 Backbone 重新路由到当前 URL?