Javascript函数未返回预期值

时间:2016-07-09 00:15:59

标签: javascript

我正在尝试运行以下功能

var getjson = function(){
    $.get('/api/todos/testing', function(results){
        return results;
    });
}

结果应如下所示:

[{_id: "57803baf0a76d5c924b18ca2", username: "testing", toDoTask: "Buy Water", isDone: false, __v: 0},{_id: "57803baf0a76d5c924b18ca3", username: "testing", toDoTask: "Buy Milk", isDone: false, __v: 0}]

当我尝试调用函数将列表附加到我的Angular控制器

angular.module('firstapp').controller('todos', function(){
   this.list= getjson();
});

列表不保存函数返回的值。

我确定问题与我试图返回结果的方式有关,但我找不到正确的方法。

1 个答案:

答案 0 :(得分:2)

$.get是异步的,因此当您运行getjson()时,代码仍将执行GET操作,但它会立即返回。

由于您没有为其定义return语句,因此默认情况下,javascript会返回undefinedthis.list将被设置为。{/ p>

$.get的文档: https://api.jquery.com/jquery.get/

要解决您的问题,最简单的方法是让getjson()接受回调函数。

示例:

var getjson = function(done){
    $.get('/api/todos/testing', function(results){
        return done(results);
    });
}

然后,您将使用设置getjson()

的函数调用list
angular.module('firstapp').controller('todos', function(){
   getjson(function(results) { this.list = results; }));
});