나는 내부에 단일 사용자를 붙잡을 수있는 사용자 컬렉션을 만들고 있습니다. 이것은 다른 시스템에서 일치하는 데 사용되므로 사용자를 한 번로드 한 다음 나중에 세부적으로 일치시킬 수 있어야합니다. 그러나 내부 메서드에서 외부 사용자 컬렉션에 액세스하는 데 문제가 있습니다.바깥 쪽 범위에 액세스하기
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가 시작하기 위해 호출되는 방법이라고 생각하지만, 바깥 쪽 및 바깥 쪽 변수를 올바르게 사용하고 있는지 확신 할 수 없습니다.
환상적인 ** async ** 세계에 오신 것을 환영합니다! 너는 그렇게 할 수 없다. – SLaks
그래,이 작업을 덜 비동기로 만들려고했다. 실패. 감사. – BryanGrimes