React.JS的Superagent Response Scope问题

时间:2016-02-23 20:00:54

标签: javascript scope superagent

我正在使用react.JS并在视图中使用了一个ajax请求。

响应完美,问题是我无法访问末尾函数之外的resp体。

这是我的代码 -

    var student= null;
    request
                .get(APIConfig.PATH.TEACHER+"class/"+classid+"/student/"+thing.id)
                .end(function(err,resp){
                    student= resp.body;
                    console.log(student);
                });
    console.log(thing);
    console.log(student); 

学生的第一个控制台日志向我显示了我的视图所需的数据。 学生的第二个控制台日志显示为null(来自第一个变量)。这绝对是一个范围问题,我想知道如何绕过这个来访问函数外的resp.body?

1 个答案:

答案 0 :(得分:1)

这不是范围问题,而是异步(时间)问题。

console.log将在请求回调之前执行,执行此操作的两种主要方法是使用回调或promises

回调:

var getStudent = function(callback){
    request
        .get(APIConfig.PATH.TEACHER+"class/"+classid+"/student/"+thing.id)
        .end(function(err,resp){
            callback(resp.body);
        });
});

getStudent(function(student){
    console.log(student);
});

无极:

var getStudent = function(){
    return new Promise(function(resolve, reject){
        request
            .get(APIConfig.PATH.TEACHER+"class/"+classid+"/student/"+thing.id)
            .end(function(err,resp){
                resolve(resp.body);
            });
    });
});

getStudent()
    .then(function(student){
        console.log(student);
    });