Как вложить обещания с помощью средства развертывания truffle в сценарий миграции truffle

#javascript #solidity #truffle

#javascript #надежность #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') во внутреннюю функцию, она не будет выведена на консоль.

Кто-нибудь знает, как решить эту проблему?

Ответ №1:

Используйте «await / async» вместо обратных вызовов promise.