Javascript OOP - 从对象方法(嵌套函数)内的函数返回值

标签 javascript oop

我无法从对象方法内的函数返回值。我怎么能这样做?让我用代码来解释。

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 分配应该在异步调用之后分配。 (告诉我们您使用的是什么异步库)

你的例子中有其他代码的味道

但是您的代码也有其他味道。您的内部函数 queryDBsuccesserror 函数是在闭包中定义的,为了可读性,它们应该定义为局部范围变量:

var success = function (data) {
    // process data
    return data;
}

关于Javascript OOP - 从对象方法(嵌套函数)内的函数返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11779393/

相关文章:

javascript - 当多个对象共享相同的 View 模型时,如何在kendo ui中获取事件源?

javascript - promise 内部工作

java - Java 中继承常量的最佳实践是什么?

java - 如何为所有子类定义构造函数

php - 如何遍历数组的数组

javascript - 使用 javascript/jQuery 构建 JSON 字符串

javascript - 使用 RequireJS 多页面和页面模板

javascript - 当用户未选择下拉菜单中的选项时,如何提醒用户

javascript - 在文字对象上使用 Object.create 的奇怪行为和多个实例

php - 将代码(方法)注入(inject)类?