我正在使用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?
答案 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);
});