我有从分散在我的 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
时控制才返回到调用函数?
最佳答案
您无法使其同步。从你的代码中我猜你是按主键读取的,所以你需要类似的东西:
function getProdValue(key) {
$data("Product").read(key)
.then(function(product) {
return $.parseJSON(product.value);
});
}
关于javascript - 获取jaydata同步返回对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18631824/