我正在尝试开发一个JavaScript API和一组模式,以便使用前进有意义并且直观供人们使用。 在调用通过react-native网桥运行的CRUD JavaScript函数时,将数据一致性检查与写入或其他读取一起批处理的最佳方法是什么?
以下是方案的示例:业务关键UI组件包含多个字段:
投资组合价值
折扣百分比
计算折扣
净费用。
折扣可以根据市场波动(svc调用),销售团队更新(交互式用户更新),基于数量(商业逻辑)或基于某些机器学习模型(svc调用)更改,组织更有可能再次订购。突变可以来自本机端事件,远程服务(有时带有webhook),甚至是应用程序业务逻辑。开发人员如何保证他们在某个时间点读取的数据与他们在写入新数据时读取的数据相同?
一些可能的伪代码,这似乎不对:
var currentDiscount = await someModel.getDiscountValue();
var currentPortfolioValue = await someModel.getPortFolioValue();
var netFees = currentServiceRate - (currentServiceRate * currentDiscount);
/**
* In order to guarantee that the currentDiscount didnt change since it was retrieved
* this API batch-sends the value the original recieved value along with the update action.
* This means the platform, on the native/view side, will have to synchronously conditional check the current value
* with the value in the UI, if it is the same, update the net fees field.
*/
try {
await someModel.UpdateFeeValue(netFees, [ currentDiscount ]);
} catch (err) {
console.log(err);
}
当数据/模型从所有不同方向变异时,数据一致性是一项难以保证的事情。处理来自多个不同路由的更改,包括应用程序的交互式用户,服务中的事件,甚至应用程序逻辑。在React-native中由于其解耦性质(批处理桥),JavaScript应用程序逻辑和本机视图层之间的数据读/写一致性保证较少。