gpt4 book ai didi

Javascript:如何从方法内的函数获取值

转载 作者:行者123 更新时间:2023-12-03 05:24:06 24 4
gpt4 key购买 nike

我尝试从方法内的嵌套函数获取值(true 或 false),但值返回 UNDEFINED。如何从对象嵌套函数中获取值?

var result = { 

compute: function() {
this.retorno = result.transaction();
},

transaction: function() {

var db = window.sqlitePlugin.openDatabase({name: 'database.db', location: 'default'});

db.transaction(checaFR,erroFR); //Check if (F)irst (R)un.

function checaFR(tx){ //Check if table exists
tx.executeSql('SELECT * FROM setup',[],checaFRSuccess,erroFR2);
alert("Select Query OK");

}

function erroFR(err){ //Return if error
alert('Ops - '+err);
return false; //This value I Need! :(
}

function checaFRSuccess(tx,result){
alert("Query Sucess "+result.rows.length);
return ('Rows: '+result.rows.length);
}

function erroFR2(err2) { //If no DB table

alert("erroFR2: "+JSON.stringify(err2));
db.transaction(populateDB, errorCB, successCB); //Start DB Populate
}

function populateDB(tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS setup (id INTEGER PRIMARY KEY AUTOINCREMENT, runned TEXT NOT NULL)');
tx.executeSql('INSERT INTO setup(runned) VALUES ("1")');
}

function errorCB(errCB) {
alert("Error processing SQL: "+errCB);
return false; //This value I Need! :(
}

function successCB() {
alert("successCB OK");
return true; //This value I Need! :(
}

}
};
result.compute(); //Start the main function

return {
retorno: "var: "+result.retorno //This returns UNDEFINED
};

如何从该函数中获取值并传递它?

注意:所有回调和警报都正常工作,包括数据库创建。 :D

最佳答案

您可以使用以下代码来引用嵌套在其中的函数。

result.transaction().erroFR();
result.transaction().errorCB();

但是之前您需要从需要公开访问的内部函数返回对象。这基本上是一个模块模式,您可以在其中仅向外界公开相关信息。因此,您需要公开如下所示的函数。请注意函数末尾的 return 语句,该语句返回一个对象。

var result = { 

compute: function() {
this.retorno = result.transaction();
},

transaction: function() {

var db = window.sqlitePlugin.openDatabase({name: 'database.db', location: 'default'});

db.transaction(checaFR,erroFR); //Check if (F)irst (R)un.

function checaFR(tx){ //Check if table exists
tx.executeSql('SELECT * FROM setup',[],checaFRSuccess,erroFR2);
alert("Select Query OK");

}

function erroFR(err){ //Return if error
alert('Ops - '+err);
return false; //This value I Need! :(
}

function checaFRSuccess(tx,result){
alert("Query Sucess "+result.rows.length);
return ('Rows: '+result.rows.length);
}

function erroFR2(err2) { //If no DB table

alert("erroFR2: "+JSON.stringify(err2));
db.transaction(populateDB, errorCB, successCB); //Start DB Populate
}

function populateDB(tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS setup (id INTEGER PRIMARY KEY AUTOINCREMENT, runned TEXT NOT NULL)');
tx.executeSql('INSERT INTO setup(runned) VALUES ("1")');
}

function errorCB(errCB) {
alert("Error processing SQL: "+errCB);
return false; //This value I Need! :(
}

function successCB() {
alert("successCB OK");
return true; //This value I Need! :(
}

// Return an object containing functions which needs to be exposed publicly
return {
checaFR : checaFR,
erroFR : erroFR,
checaFRSuccess : checaFRSuccess,
erroFR2 : erroFR2,
populateDB : populateDB,
errorCB : errorCB,
successCB : successCB
}

}
};

关于Javascript:如何从方法内的函数获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41229504/

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