나는 지금까지 인터넷 검색이 나에게 아무것도 쓸모없는 논리와 구현에 대한 질문이 있습니다.
그래서 나는 그것을 호출하고 데이터를 구문 분석하는 작은 js 스크립트를 작성했습니다. 이제 내 문제는 동기 호출을 사용하여 작성했다는 것입니다 (예 : async : false). 이것은 많은 문제를 나타내며 일부는 다른 브라우저가 아닌 크롬에서만 작동하는 것처럼 보입니다.
그래서 내 질문은 다음과 같습니다.
비동기 호출을 만들고 결과를 구문 분석하는 논리를 어떻게 처리합니까? -전화를 끊을 때까지 결과가없고 나중에 결과가 나옵니다. 어떻게 적절하게 사용할 수 있습니까?
예를 들어 총 10,000 개의 결과를 얻고 서비스에서 한 번에 1,000 개만 반환하는 경우와 같이 몇 번 찔러야하는 웹 서비스를 사용하여 어떻게 그렇게 할 수 있습니까?
나는 문제의이 두 가지 측면에 대해 다소 혼란스럽고 어떤 도움을 주시면 감사하겠습니다. 나는 ajax와 cors를 사용하려고 시도했지만 둘 다 다양한 수준으로 작동하지만 두 번째 부분을 처리하는 방법을 이해하지 못합니다 (한 번에 결과의 일부만 가져옴).
원래 "Access-Control-Allow-Origin"으로 인해 async : true를 사용할 수 없다는 점을 감안할 때이를 위해 어떤 방법이 있습니까? 그리고 웹 서비스를 수정할 수 없습니다.
처리 구문 분석은 이미 처리되었으며 각 개별 xml 응답을 구문 분석하여 필요한 데이터를 추출하고 이후 단계에서 모두 처리합니다.
회신에 대한 의사 코드를 고맙게 생각할 것입니다. 저는 JS 학습으로 시작하기 때문에 할 수있는 모든 것을 알지 못합니다.
약속 을 사용할 수 있습니다 .
// calls your web service asynchronously
function request(page) {
return $.ajax({
url: '/xml-service/',
method: 'POST',
dataType: 'json',
data: {
delay: 1,
json: JSON.stringify(ret)
}
});
}
// retrieve all results recursively
function requestItems(page, items) {
return request(page).then(function(data){
if (data.currentPage > data.totalPage) {
return items;
} else {
return requestItems(data.currentPage + 1, items.concat(data.items));
}
});
}
function requestAll(){
return requestItems(1, []);
}
requestAll().done(function(items) {
console.dir(items);
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다