我正在创建一个用户集合,然后能够抓取单个用户。这将用于匹配另一个系统,所以我的愿望是加载用户一次,然后能够稍后进行罚款/匹配。但是,我在从内部方法访问外部用户集合时遇到问题。访问外部示波器
function Users(){
var allUsers;
this.getUsers = function() {
// ajax to that Jasmine behaves
$.ajax({
url: '../app/data/jira_users.json',
async: false,
dataType: 'json',
success: function(data) {
allUsers = data;
}
});
return allUsers;
};
this.SingleUser = function (name) {
var rate = 0.0;
var position;
this.getRate = function() {
if(position === undefined){
console.log('>>info: getting user position to then find rate');
this.getPosition();
}
$.ajax({
url: '../app/data/rates.json',
async: false,
dataType: 'json',
success: function(data) {
rate = data[position];
}
});
return rate;
};
this.getPosition = function() {
console.log(allUsers);
//position = allUsers[name];
return position;
};
//set name prop for use later I guess.
this.name = name;
};
}
而这起这一切的测试:
it("get single user's position", function(){
var users = new Users();
var someone = new users.SingleUser('bgrimes');
var position = someone.getPosition();
expect(position).not.toBeUndefined();
expect(position).toEqual('mgr');
});
的为getPosition方法是问题(这可能是显而易见的)作为ALLUSERS永远是不确定的。我在这里有另一个尝试,我尝试了几种方法。我认为问题在于如何开始使用Users.getUsers,但我也不确定我是否使用外部和内部变量是正确的。
欢迎来到**异步**的美妙世界!你不能那样做。 – SLaks
是的,我试图让这个操作更少异步。失败。谢谢。 – BryanGrimes