나는 이런 종류의 물건에 익숙하지 않아서 디자인 제안을하고 싶습니다. 의 내가이자바 스크립트 아약스 지연로드 및 기능 구성
$(function() {
$('#menuBtn').on('click', app.openUsersMenu);
});
var app = {
users: null,
openUsersMenu: function() {
if (app.users != null) {
//render menu
} else {
$.ajax({
url: '/getUsers.json'
}).success(function (data) {
app.users = data;
//render menu
});
}
}
}
같은이 게으른 로딩 및 캐싱을하는 좋은 방법이 있거나 더 나은 대안을 제안한다고 가정 해 봅시다? 렌더링 기능을 두 번 쓰는 것을 피할 수있는 일반적인 솔루션은 무엇입니까? 물론 당신은 같은 것을 할 수 :
var app = {
users: null,
openUsersMenu: function() {
if (app.users != null) {
//render menu
} else {
$.ajax({
url: '/getUsers.json'
}).success(function (data) {
app.users = data;
app.openUsersMenu(); // Call itself, now with data
});
}
}
}
마지막 패턴은 좋은 생각이다 :
var app = {
users: null,
openUsersMenu: function() {
if (app.users != null) {
app.renderMenu();
} else {
$.ajax({
url: '/getUsers.json'
}).success(function (data) {
app.users = data;
app.renderMenu();
});
}
},
renderMenu: function() {
//use app.users to render
}
}
그러나 두 기능과 자신의 이름이 오히려 혼동 될 그렇게 뭔가를 할 더 좋을 수 있을까? 이 일을하는 일반적인 방법은 무엇입니까?
가운데 하나를 사용하십시오. 이해하기 쉽습니다. –