Tib*_*bor 4 javascript html5 closures callback
我有一个大问题.我知道这是关于回调,关闭,但我不知道如何解决问题.这是我的代码
$.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
Run Code Online (Sandbox Code Playgroud)
我知道executeSql是异步函数,但我不知道如何保存并返回executeSql的结果.我使用javascript mvc和HTML脱机数据库.
谢谢您的帮助
W3C Web数据库规范讨论了对异步和同步数据库操作的支持.(见4.3和4.4)
如果您不能使用同步实现,那么您可能需要考虑像这样处理问题:
$.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']
}
}
success(result); //toss the result into the 'success' callback
})
})
//here result is undefined
alert(result)
return result
}
})
Article.findAll([], function(view) {
//...
}, function() {
//error occured
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20534 次 |
| 最近记录: |