gpt4 book ai didi

javascript - 无法在递归函数javascript中返回变量

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

大家好,我正在创建一个 Phonegap 程序,该程序使用 javascript 函数返回数据库中收集的值,问题是我无法返回这些值,因为它们位于递归函数中,每次调用 main 函数时它都不会返回重新启动任何内容

代码是:

function exporta_imoveis(){
var db = window.openDatabase("Ithomes", "1.0", "Cordova Demo", 200000);
db.transaction(function coletandovisitas(tx){
alert('Coletando imoveis no BD local ');
tx.executeSql('SELECT * FROM IMOVEIS', [], function percorrendolinhas(tx, results){
var len = results.rows.length;
var array_retorno = new Array();
for (var i=0; i<len; i++){
array_retorno[i] = results.rows.item(i);
}
return array_retorno;
}, function err(){ alert('erro ao coletar') } );
},function erro(){ alert('erro ao coletar dados dos imoveis') }, function acerto(){ alert('Dados dos imoveis coletadas com sucesso')} );
}

我需要获取array_retorno变量的值,请帮忙

最佳答案

您遇到的问题与递归无关,而是与异步函数有关。当您的数据库操作完成时,您传递给 executeSql 的函数 percorrendolinhas 将被执行,但主函数的其余部分可能会首先执行。因此你应该使用回调:

function exporta_imoveis(callback){
var db = window.openDatabase("Ithomes", "1.0", "Cordova Demo", 200000);
db.transaction(function coletandovisitas(tx){
alert('Coletando imoveis no BD local ');
tx.executeSql('SELECT * FROM IMOVEIS', [], function percorrendolinhas(tx, results){
var len = results.rows.length;
var array_retorno = new Array();
for (var i=0; i<len; i++){
array_retorno[i] = results.rows.item(i);
}
callback(array_retorno);
}, function err(){ alert('erro ao coletar') } );
},function erro(){ alert('erro ao coletar dados dos imoveis') }, function acerto(){ alert('Dados dos imoveis coletadas com sucesso')} );
}

您现在可以通过以下方式调用您的函数:

exporta_imoveis(function (array_retorno) {
//do something with array_retorno
});

关于javascript - 无法在递归函数javascript中返回变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16569055/

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