1

我有设置和获取分散在我的 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检索到之前将控件返回给调用函数,并且解析“未定义”给了我语法错误。如何使整个调用同步,以便控制仅在返回时才item.Value返回调用函数?

4

1 回答 1

1

你不能让它同步。从您的代码中,我猜您是按主键读取的,因此您需要以下内容:

function getProdValue(key) {
       $data("Product").read(key)
       .then(function(product) {
            return $.parseJSON(product.value);
        });
 }
于 2013-09-05T11:00:54.120 回答