小编Nai*_*aim的帖子

对Web SQL数据库的同步查询

我工作的一个JavaScript代码与客户端SQLite数据库进行交互的,通过新望window.openDatabase(...),database.transaction(...)和相关的API.正如大多数人所知,当你以这种方式执行查询时,它是一个异步调用,这通常很好.您可以根据回调进行调用并处理结果.

在我目前的情况下,我正在为一个客户端工作,该客户端在本地存储的数据库中执行某些层次结构.我遇到麻烦的算法部分需要从某一行开始,该行有一个"父"(由id)引用,这是表中的另一行.我必须继续走这棵树直到我到达根部.

问题是,我不知道如何使用带回调的异步样式查询来继续提供循环父ID.理想情况下,我可以阻止查询,以便我可以在循环中完成所有操作.这是我当前设置的关键部分:

    for (i in search.searchResults.resultsArray)
    {
        hierarchyArr = new Array();
        pageHierarchyArr = new Array();
        id = search.searchResults.resultsArray[i].ID;

        while (id != null && id != "")
        {
            var hierarchySql = "SELECT ID, parentID, type, content FROM content WHERE ID = " + id;

            // This is a prettied up call to database.transaction(...)
            var rs = db.getRS(hierarchySql);

            // Ideally the code below doesn't execute until rs is populated

            hierarchyArr.push(rs[0]);

            if (rs[0].type == "page")
            {
                pageHierarchyArr.push(rs[0]);

                // …
Run Code Online (Sandbox Code Playgroud)

javascript sqlite synchronization web-sql

13
推荐指数
1
解决办法
1万
查看次数

标签 统计

javascript ×1

sqlite ×1

synchronization ×1

web-sql ×1