gpt4 book ai didi

javascript - 有没有一种干净的方法来混合异步和同步数据库查询处理?

转载 作者:行者123 更新时间:2023-11-28 01:57:52 25 4
gpt4 key购买 nike

我发现同步数据库查询生成 mozIStorageStatementRow而异步代码生成 mozIStorageRow .

我可以通过一个简单的垫片轻松解决这个问题。在混合使用同步和异步调用时,是否有一种更干净(即比我的填充程序更干净)的方法来传递数据库查询结果?

示例代码,从 mozIStorageStatement 开始(例如,通过调用 createStatement() ):

//Sync Example:
myStorageStatement.executeStep();
var row = myStorageStatement.row;
var myNameColumn = row.name;

//Sync Shim Example:
myStorageStatement.executeStep();
var row = {
getResultByName: function (str) {
return myStorageStatement.row[str];
}
};
var myNameColumn = row.getResultByName("name");

//ASync Example:
myStorageStatement.executeAsync({
//...
handleResult: function (aResultSet) {
var row = aResultSet.getNextRow();
var myNameColumn = row.getResultByName("name");
}
});

最佳答案

并不是说我不知道​​(并且我过去读过几次实际的代码)...

mozIStorageStatement(不是..Row)和mozIStorageRow也实现mozIStorageValueArray ,这是一个比较低级的。确保按要求 QueryInterface/instanceof

除此之外,您还必须编写一些包装器或 Proxy ,就像您已经做的那样。

旁白:如果可能的话,您应该避免使用同步 API,以保持主 (UI) 线程的快速运行。 IIRC 甚至有计划(或至少是)从长远来看将其删除。还有一个名为 Sqlite.jsm 的高级包装器,特别是与 Task.jsm 结合使用时(Sqlite.jsm 页面上的示例)。

关于javascript - 有没有一种干净的方法来混合异步和同步数据库查询处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18836710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com