javascript - 获取jaydata同步返回对象

标签 javascript synchronization 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 时控制才返回到调用函数?

最佳答案

您无法使其同步。从你的代码中我猜你是按主键读取的,所以你需要类似的东西:

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

关于javascript - 获取jaydata同步返回对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18631824/

相关文章:

javascript - 未捕获的类型错误 : object is not a function when pressing back button

javascript - jQuery 获取类名列表并添加到隐藏表单

c++ - 没有 mutex.h 的 VC++ 中的自旋锁同步

Android 应用程序离线同步到 Azure SQL Server 和 Blob 存储

javascript - 数组和对象的混合体?

java - java中synchronized(expr){}中expr的意义

javascript - 在 jayData 中使用自定义实体的最佳实践是什么?

typescript - 带有 Typescript 的 Jaydata WebSql 提供程序

javascript - JayData 不从 OData 填充对象

javascript - Controller 的未知提供程序错误