【发布时间】:2021-09-22 07:56:39
【问题描述】:
这是我的代码
for(var i = 0 ; i <= 4 ; i++){
myContract.methods.contractmanager(i).call().then((res)=>{
console.log(res[0]);
}):
}
我的合同中存储了 2 个数据,我想打印它,但它并不总是 2 个,它会更加动态,我不知道它们会有多少。执行此代码后,我有 2 个输出和 2 个错误。如何使循环在 2 处停止并且不会显示错误?如何检测错误并打破循环?如何判断输出是否为空? 可靠性代码:
function contractmanager(uint i) public view returns(uint , address , address , uint , uint , uint){
return (contrs[list_contr[i]].idc , contrs[list_contr[i]].seller , contrs[list_contr[i]].buyer, contrs[list_contr[i]].price ,contrs[list_contr[i]].date , contrs[list_contr[i]].pos );
}
【问题讨论】:
-
请编辑您的问题并分享
contractmanager()Solidity 函数及其依赖项。这将使我们能够更好地解决您的问题。 -
完成。但它并不重要。它只是返回数据
-
list_contr[i]和contrs[list_contr[i]]存在吗?它们的数据类型是什么(例如,动态长度数组、映射……)? ...您是否有可能尝试访问数组的未定义项? (示例:数组的长度为 2,但您尝试获取索引 3。) -
它是一个动态数组,我想在 javascript 中获取数据,所以我需要一个 for 循环来获取数据。例如它的长度是 5 但我的 for 循环一直持续到 50 我想打印 5 个数据数组并检测到该数组为空