获取jaydata以同步返回对象



我有一些方法可以从分散在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);
        });
 }

相关内容

  • 没有找到相关文章

最新更新