我无法从对象方法内的函数返回值。我怎么能这样做?让我用代码来解释。
function ObjPerson() {
this.getPerson = function() {
function queryDB() {
//run query and pass result data to success or error functions
}
function success(data) {
//process data
return data;
}
function error(errorData) {
//process error
}
queryDB();
}
}
var person = new ObjPerson;
var userData = ObjPerson.getPerson();
问题是 getPerson() 方法没有返回任何内容。执行此操作的最佳方法是什么?
谢谢!
最佳答案
如果这是一个同步函数则返回值
function ObjPerson() {
this.getPerson = function() {
function queryDB() {
//run query and pass result data to success or error functions
}
function success(data) {
//process data
return data;
}
function error(errorData) {
//process error
}
return queryDB(); // HERE'S THE CHANGE
}
}
var person = new ObjPerson(); // always use parentheses
var userData = person.getPerson(); // ERROR: getPerson is instance function
但是如果这个函数是异步的,那么你应该做一些不同的事情。不幸的是,您不能只调用:
var userData = person.getPerson();
因为在进行分配时,您的异步调用可能还不会返回...因此您的 userData
分配应该在异步调用之后分配。 (告诉我们您使用的是什么异步库)
你的例子中有其他代码的味道
但是您的代码也有其他味道。您的内部函数 queryDB
、success
和 error
函数是在闭包中定义的,为了可读性,它们应该定义为局部范围变量:
var success = function (data) {
// process data
return data;
}
关于Javascript OOP - 从对象方法(嵌套函数)内的函数返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11779393/