gpt4 book ai didi

javascript - OOP -executeSql 将结果返回到 var 中,它显示未定义

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

我正在尝试使用Phonegap函数executeSql通过select语句获取SQL查询,我只想从我的OOP函数返回查询结果我读了这个问题 Return executeSQL function但我无法很好地理解它,所以我无法将它应用到我的代码中

function Invoice() {
this.read = function(){
var stmnt = "SELECT * FROM invoices ORDER BY ID DESC";
function callback(callback_fun){
var myrows = [];
db.transaction(function(tx){
tx.executeSql(stmnt, [], function(tx,result){
for(var i = 0; i < result.rows.length; i++){
var row = result.rows.item(i);
myrows.push(row);
}
//console.log(myrows);
callback_fun(myrows);
}, function(tx,error){
alert('Error: '+error.message);
return;
});
});
}
callback(function(newResult){
return newResult;
});
};
};
var newInvoice = new Invoice();
var myResult = newInvoice.read();
alert(myResult);

最佳答案

您需要将 callback() 加上 callback_fun() 设置为返回值,如下所示:

function Invoice() {
this.read = function(){
var stmnt = "SELECT * FROM invoices ORDER BY ID DESC";
function callback(callback_fun){
var myrows = [];
db.transaction(function(tx){
tx.executeSql(stmnt, [], function(tx,result){
for(var i = 0; i < result.rows.length; i++){
var row = result.rows.item(i);
myrows.push(row);
}
//console.log(myrows);
return callback_fun(myrows); // <<----- RETURN
}, function(tx,error){
alert('Error: '+error.message);
return;
});
});
}
return callback(function(newResult){ // <<<<<<<<----------- RETURN
return newResult;
});
};
};

Javascript 调用堆栈是什么样的:

  1. 您正在调用Invoice.read(),但 read-Function 没有 return 关键字,因此它不会返回任何内容,这会导致未定义
  2. 您正在调用回调函数。这也没有返回任何内容。

编辑2:
哦,好吧,您正在调用另一个函数 db.transaction,该函数当前将值返回给您的回调函数。所以你可能会这样做:

function callback(callback_fun){        
var myrows = [];
return db.transaction(function(tx){
tx.executeSql(stmnt, [], function(tx,result){
for(var i = 0; i < result.rows.length; i++){
var row = result.rows.item(i);
myrows.push(row);
}
//console.log(myrows);
return callback_fun(myrows); // <<----- RETURN
}, function(tx,error){
alert('Error: '+error.message);
return;
});
});
}

编辑:这是你的代码。哦,好吧,稍微简化一下:JSBIN
这是我的代码。 JSBIN-Working Example
您需要按右上角的使用 JS 运行

关于javascript - OOP -executeSql 将结果返回到 var 中,它显示未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31266215/

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