#ethereum #solidity #smartcontracts #truffle
Вопрос:
У меня есть простой смарт-контракт ToDoList, который выглядит так
pragma solidity ^0.8.0;
contract TodoList {
uint256 public taskCount = 0;
struct Task {
uint256 id;
string content;
bool completed;
}
mapping(uint256 => Task) public tasks;
constructor(){
createTask("Buy Keyboard");
}
function createTask(string memory _content) public {
taskCount ;
tasks[taskCount] = Task(taskCount, _content, false);
}
}
Я хочу прочитать идентификатор первого задания, но он отображается неопределенным, что бы я ни пытался? Каков здесь правильный подход?
Ответ №1:
Вы можете сделать это, дождавшись обещания, а затем присвоив значение:
>> task.then(data => { id = data["id"] } )
>> id
Ответ №2:
Вам нужно использовать await
ключевое слово в качестве асинхронного действия. например
todoList = await TodoList.deployed()
task = await todoList.task(1)
id = task.id.toNumber()