javascript - 资产在 for 循环中没有得到更新
问题描述
我正在尝试在事务中使用 for-loop。for 循环基本上创建了新的资产,即。我在每次迭代中创建一个新资产。
问题是每次循环迭代的值都vals.length
保持为零(0)。如果我尝试这样做console.log(vals)
,即使循环迭代它也会显示空数组i=1,2,3...
但是一旦整个交易功能完成,我就可以在 UI 中看到资产。
模型.cto
asset Net identified by NetNumber{
o String NetNumber
o Integer totaltransaction
}
transaction GenerateNet {
}
逻辑.js
/**
* submit an order
* @param {org.demo.invoice.GenerateNet}
* @transaction
*/
async function GenerateNet(){
var amt = [200, 500, 700];
var netNumber = ['aa', 'bb', 'cc'];
for(var i=0; i < amt.length; i++){
let netRegistry = await getAssetRegistry('org.demo.invoice.Net');
let vals = await netRegistry.getAll();
console.log(vals.length);
console.log(vals);
let newNetting = factory.newResource('org.demo.invoice','Net', netNumber);
newNetting.totaltransaction = amt[i];
await nettingRegistry.add(newNetting);
}
}
随着迭代的进行,我希望看到 vals.length 的值是 1,2,3。
解决方案
在交易被背书之前,新资产不会添加到分类帐中。因此,在运行代码时,实际上并没有添加任何资产,如果/当交易被批准时,它们会被安排添加。
换句话说,您不能在同一个事务中添加资产并读取它。
推荐阅读
- laravel - 如何防止 laravel 的作业同时运行
- modelica - 第一次创建热力学模块时需要注意什么?
- java - 将多个大型列表写入 XML 的最佳方法
- flutter - Flutter:导航在应用程序中有效,但在单元测试中无效
- flex-lexer - 在执行 JFlex 中的操作之前检查条件是否满足
- c++ - 我特别在moodle上遇到堆栈粉碎错误
- java - 使用 xpath 仅在第一个 div 中获取 span 标签的计数
- javascript - 根据 Firestore 中的文档字段限制数据
- android - 在同一移动应用的另一个屏幕上打印从 Firebase 获取的数据
- reactjs - 当不通过根 (/) 进入站点时,我在 Nginx 中部署的 SPA React 中收到 404 错误