Я пытаюсь установить счетчик, пока приложение реагирует на несколько звонков.Пишу Dapp с web3 и солидностью.Во время выполнения вызовов моего умного контракта я пытаюсь установить состояние, чтобы показать счетчик, но все приложение зависает, пока выполняются вызовы контракта, после выполнения вызовов и возвращаемых значений он устанавливает счетчик и очень быстро сбрасывает счетчик (Вы можете видеть консоль изменения значения, регистрирующую логическое значение).Приложение размораживается и продолжается.Как я могу настроить счетчик и приложение, чтобы оно не зависало во время звонка:
onSubmit(e) {
e.preventDefault();
// inProcessOfCalling sh
this.setState({ inProcessOfCalling: true });
...
const contractData = callContract(parseTestJson.steps, web3);
Promise.all(contractData).then((values) => {
...
// turn spinner off
this.setState({ inProcessOfCalling: false });
});
}
function callContract(callInfo, web3) {
const dataArr = [];
for (let i = 0; i < callInfo.length; i += 1) {
// ...
const getData = thisContract[callInfo[i].func].getData(
...callInfo[i].args,
{ from: callInfo[i].from },
);
// ...
const trans = web3.eth.sendTransaction({
to: callInfo[i].contract,
from: callInfo[i].from,
data: getData,
});
let receipt = web3.eth.getTransactionReceipt(trans);
returnObj = {
receipt,
testName: callInfo[i].name,
expectPassed: callInfo[i].expects.success === transactionPassed,
expectMessage: callInfo[i].expects.message,
};
dataArr.push({ error: false, returnObj });
}
return dataArr;
}
Не думаю, что это проблема web3.Я предположил бы, что это заморозит приложение с несколькими вызовами извлечения API.