我有方法来设置和获取分散在我的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方法,它从各个地方调用,并且调用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
时控制才会返回调用函数?
答案 0 :(得分:1)
您无法使其同步。从你的代码我猜你用主键读取,所以你需要像:
function getProdValue(key) {
$data("Product").read(key)
.then(function(product) {
return $.parseJSON(product.value);
});
}