JSON이 포함 된 텍스트 파일에서 일부 데이터를 읽는 JavaScript 함수가 있습니다. 모든 JSON 데이터를 내 캡슐화 된 함수 내의 전용 변수에 전달하여 데이터를 다시 읽어야 할 경우 변수를 사용할 수있게하려는 것이 이상적입니다.캡슐화 된 JavaScript 함수에서 재사용을위한 개인 변수 설정
나는 특정 검사를해야 할 때마다 텍스트 파일을 읽고 싶지 않습니다. 나에게 이것은 성능면에서 좋지 않다. 당신이 볼 수 있듯이
function someObj() {
var siteDataSet = null;
this.Init = function() {
populateData();
}
this.GetPageData = function() {
var props = new Array();
props[0] = siteDataSet.pagetitle;
props[1] = siteDataSet.week_no;
props[2] = siteDataSet.intro_text;
return props;
}
function populateData() {
$.ajax({
type: "GET",
url: "data.txt",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: "",
success: function (result) {
siteDataSet = result;
},
error: function() { },
complete: function() { }
});
}
}
$(document).ready(function() {
o_obj = new someObj();
o_obj.Init();
var t = o_obj.GetPageData();
});
, 나는 siteDataSet
라는 변수에 모든 JSON을 통과 jQuery를 Ajax를 사용하는 Init()
전화 해요 :
여기 내 코드입니다. GetPageData()
을 호출하면 siteDataSet 변수가 null이 아니므로 null입니다.
내가 완전히 어리석은 방식으로 달성하고자하는 것에 접근하고 있습니까?
비동기식 아약스 호출이 문제가되는 것은 옳습니다. 나는 당신에게 솔루션을 성공적으로 구현할 수있게 해줬지만, 나는 또한 나의 ajax 호출에서 "async : false"속성을 설정하여 내 이슈를 해결하는 것으로 보였다. 솔루션에 비해 "async : false"나쁜 습관을 사용하고 있습니까? – sbhomra
AJAX의 A는 비동기를 의미합니다. 가장 큰 문제는 성능입니다. 완료 될 때까지 차단하여 원격 서버가 처리를 완료 할 때까지 스크립트가 중단됩니다. 대개 지연은 큰 문제는 아니지만 많은 양의 처리, 느린 연결, 높은로드 또는 기타 요인으로 인해 요청이 예상보다 오래 걸릴 수 있습니다. 콜백 메소드를 사용하면 요청이 처리되는 동안 사용자가 사이트를 계속 사용할 수 있습니다. 결국 사용자에게 가장 좋은 경험이 무엇인지에 대한 결정을 내려야합니다. – jcern