获取jaydata以同步返回对象

时间:2013-09-05 08:51:44

标签: javascript sync 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方法,它从各个地方调用,并且调用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时控制才会返回调用函数?

1 个答案:

答案 0 :(得分:1)

您无法使其同步。从你的代码我猜你用主键读取,所以你需要像:

function getProdValue(key) {
       $data("Product").read(key)
       .then(function(product) {
            return $.parseJSON(product.value);
        });
 }