gpt4 book ai didi

javascript - 嵌套延迟在 YDN-DB 事务中

转载 作者:行者123 更新时间:2023-12-03 12:37:14 25 4
gpt4 key购买 nike

我查看了此处发布的示例:YDN-DB with multiple deferred其中包含一些非常接近我想要的代码,但不完全是。

我想知道在事务中嵌套延迟查询是否安全?例如:

loadWorkOrders: function() {

var params = {
userId: 1,
status: Status.Allocated
};

var allOrders = null;

return workOrderHttpService.getWorkOrders(params).then(function(orders) {
allOrders = orders.data;
return ydndatabase.open();
}).then(function(db){
return db.run(function(runDb){
allOrders.forEach(function(workOrder){
runDb.count(Store.WorkOrder, ydn.db.KeyRange.only(workOrder.id)).then(function(count) {
if(count == 0) {
return runDb.put(Store.WorkOrder, workOrder);
} else {
return workOrder;
}
});
});
}, [Store.WorkOrder], TransactionType.ReadWrite)
});

}

编辑:我编辑了代码以显示如何在其之前进行对 http 服务的异步调用

最佳答案

是的,你用对了。正如 @Bergi 所说,您只需返回 run 请求即可。

只要您的 Promise 被同步解析或使用 db Promise(始终异步),嵌套 deferred 就是安全的。

延迟嵌套通常没问题,但需要担心循环,例如用于意外的大循环的 orders.forEach 。浏览器对长事务不满意(是的,可能会导致神秘的错误或崩溃)。

就像使用 count 来检查记录是否存在的方式一样。我认为它应该是 ydn.db.KeyRange.only(workOrder.id),因为 count 需要键范围输入参数。

关于javascript - 嵌套延迟在 YDN-DB 事务中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23684003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com