-1

我正在尝试使用内部存储 IndexedDB 浏览器,而不是 localStorage。我遇到了异步访问的几个问题。我想获取更多存储在多个对象存储中的数据,并使用数据库中的数据集执行处理。

举一个简单的例子,它可能是:

var product = getProductById('xxx');
var countryTax = getCountryTax('FR');
var storeDetailed = getStoreDetailed('xxx');
var productPrice = product.price * countryTax.Tax * storeDetailed.margin;

通过异步访问,它提供:

getProductById('xxx').onComplete = function (product) {
        getCountryTax('FR').onComplete = function (product, countryTax) {
              getStoreDetailed('xxx').onComplete =function(product, countryTax, storeDetailed) {
                   var productPrice = product.price * countryTax.Tax * storeDetailed.margin;
              }
         }
}

这听起来很复杂,代码对存储方式有很高的附着力。

几乎所有遇到的示例都将阅读库的结果提供给 html 页面。

从我的角度来看,我想提供变量并使用数据进行处理。请问您有什么想法吗?

4

1 回答 1

0

似乎您只想使用闭包范围内的变量。这没什么大不了的,您可以getProductById在内部函数(如getCountryTax)中轻松访问外部函数(如)的变量。

您唯一的问题是,您在本地范围内定义了具有相同名称的变量。这些将具有优先级,undefined除非它是由调用者设置的(即使在闭包范围内有一个具有此名称的分配变量)。以下是在示例中使用闭包范围变量的方法:

getProductById('xxx').onComplete = function (product) {
        getCountryTax('FR').onComplete = function (countryTax) { // removed product
              // here you can access product from closure and countryTax from local scope
              getStoreDetailed('xxx').onComplete = function(storeDetailed) { // removed arguments, too
                   // here you can access product and countryTax from closure
                   // and storeDetailed from local scope
                   var productPrice = product.price * countryTax.Tax * storeDetailed.margin;
              }
         }
}
于 2013-09-11T13:43:43.667 回答