首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将结果返回给调用函数(开发firefox扩展)

如何将结果返回给调用函数(开发firefox扩展)
EN

Stack Overflow用户
提问于 2013-02-09 21:38:40
回答 1查看 131关注 0票数 0

在我的firefox扩展中,我有一个带有一些表的sqlite-database。使用executeAsync(),我更新了表,插入了一些新数据并选择了一些值。select-case给我带来了一些问题。

在handleCompletion()-function中,我可以将从表中检索到的数据传递给另一个函数(例如,还可以向结果发出警报)。但我希望将结果传递回调用函数。我在网上搜索了我的问题的答案,但我找不到解决方案。

我发现:

代码语言:javascript
复制
retrieveData: function() {
    var rows = new Array(); 

    if (this.dbConn.connectionReady){
        statement = this.dbConn.createAsyncStatement("SELECT * " +
                                                "FROM 'domains' " +
                                                ";");

        statement.executeAsync ({
            handleResult: function(aResultSet) {
                var i = 0;

                for (let row = aResultSet.getNextRow(); row; row = aResultSet.getNextRow()) {
                   rows[i] = row;
                   ++i;
                }
            },

            handleError: function(anError) {
                alert("error");
            },

            handleCompletion: function(aReason) { 
                if (aReason != Components.interfaces.mozIStorageStatementCallback.REASON_FINISHED) { 
                    // something went wrong
                    alert("error2");
                } 
            }
        });
    } 

    return rows;
}

此代码不返回预期的结果。该语句是在方法返回Array“row”之后执行的。因此,我的调用函数永远不能从表中接收数据...

我该如何解决这个问题?返回表的数据行有没有超时之类的东西?

非常感谢您的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-09 21:42:31

理想情况下,您应该在上面的示例中处理回调。这就是API开发人员打算使用SQLite的方式。:)

代码语言:javascript
复制
retrieveData: function(_callback) {
   ...
   statement.executeAsync ({
      ...
      handleCompletion: function(aReason) { 
         ...
         _callback(rows);
      }
   });
}

以及调用函数的位置:

代码语言:javascript
复制
retrieveData(function(rows) {
   // do stuff with rows here
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14788754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档