【发布时间】:2010-12-26 06:31:56
【问题描述】:
我有一个大问题。我知道这是关于回调,关闭,但我不知道如何解决这个问题。这是我的代码
$.Model.extend('Article',
{
findAll : function(params, success, error){
var result = []
db.transaction(function(tx) {
tx.executeSql('select * from contents', [],function(tx, rs) {
for(var i=0; i<rs.rows.length; i++) {
var row = rs.rows.item(i)
result[i] = {
id: row['id'],
title: row['title'],
body: row['body']
}
}
})
})
//here result is undefined
alert(result)
return result
}
})
//undefined
var view = Article.findAll
我知道executeSql是异步函数,但是不知道executeSql如何保存和返回结果。我使用 javascript mvc 和 HTML 离线数据库。
感谢您的帮助
【问题讨论】:
-
我在 Google 上搜索了“Javascript MVC”并找到了该库,但在 JavaScript MVC 文档中找不到有关“executeSql”的任何内容。如果你手头有文档,你应该检查一下是否有办法让 tx.executeSql 方法同步运行而不是异步运行。
-
我知道executeSql也有同步方法,但是safari和其他基于webkit的浏览器只支持异步。下面的代码完美运行,谢谢你们
-
完美运行?有人可能会说,这是“答案”? ;)
-
同步 API 仅适用于(在规范中)网络工作者,而不是窗口对象,所以这是不可能的。 dev.w3.org/html5/webdatabase/#databases
标签: javascript html callback closures