我有一些方法可以从分散在javascript中的WEBSql中设置和获取数据。以下是我使用jayData:获取数据的"get"函数
function getProductRow(key){
console.debug("Product key.. " + key);
$data("Product")
.query("it.Key == productKey", { productKey: key})
.then(function(items) {
items.forEach(function(item) {
console.debug("item.value.. " + item.Value);
return item.Value;
});
});
}
这是我的js方法,它从不同的地方被调用,inturn调用getProductRow
方法:
function getProdValue(key) {
console.debug("called getProdValue with " + key);
var value = getProdRow(key);
var prod = $.parseJSON(value);
// do stuff with prod
}
我在控制台上看到的日志是:
called getProdValue with abc111
Product key.. abc111
Uncaught SyntaxError: Unexpected token u
item.value.. // some stringified valid json string
显然,由于jaydata的异步性质,在检索item.Value
之前,控件会返回给调用函数,解析"undefined"会导致语法错误。如何使整个调用同步,以便只有在返回item.Value
时控制才能返回到调用函数?
您不能使其同步。从你的代码中,我猜你是通过主键读取的,所以你需要这样的东西:
function getProdValue(key) {
$data("Product").read(key)
.then(function(product) {
return $.parseJSON(product.value);
});
}