JSONP 요청과 동 기적으로 만들 수없는 사실에 대한 많은 질문이 있습니다. 대부분의 해결 방법에는 콜백 또는 Ajax 요청의 성공 함수를 사용하여 원하는 작업을 수행하는 것이 포함되지만 이는 저에게 맞지 않을 것이라고 생각합니다.동기식 JSONP 요청
배경 : Solr을 사용하는 검색 응용 프로그램에서 작업하고 있습니다. 다른 사람들이 Solr과 상호 작용하는 데 사용할 자바 스크립트 API를 개발 중이므로 Solr 검색 요청을 자세히 이해할 필요가 없습니다.
내 API에는 doRequest라는 함수가있는 Request 개체가 있습니다. 이 함수의 목적은 solr 서버 (다른 도메인에서 JSONP가 필요함)를 호출하고 Response 객체를 반환하는 것입니다.
Request.prototype.doRequest = function(){
var res = new Response();
$.ajax({
url: this.baseURL,
data: 'q=*:*&start=0&rows=10&indent=on&wt=json',
success: function(data){
res.response = data.response;
res.responseHeader = data.responseHeader;
/*
other...
stuff...
*/
},
dataType: 'jsonp',
jsonp: 'json.wrf'
});
res.request = this;
return res;
};
"사용자는 ..."과 같이
var req = new Request();
var res = req.doRequest();
을이 기능을 사용하고 고해상도의 결과로 무언가 다른 할 것입니다.
동기 JSONP 요청을 수행 할 수없고 ajax 함수에서 복귀 할 수 없다는 것을 감안할 때 어쨌든 res를 완전히 사용하기 전에 알아낼 수 없습니다.
고마워,
사용자가 콜백 함수를 작성하지 않아도되는 이유는 무엇입니까? Javascript의 많은 부분은 비동기식으로 작업하는 방법을 이해할 필요가 있습니다. 오랫동안 초보자 만 보호 할 수 있습니다. –
비동기는 전염성이 있습니다. 컨트롤 흐름의 한 부분이 콜백을 사용하면 컨트롤 흐름의 나머지 부분도 콜백을 사용합니다. 나는이 문제를 해결할 길이 없다고 생각합니다. Javascript의 기쁨과 공포 중 하나. –
실제로 방법이 있지만 컴파일 단계가 필요합니다. https://npmjs.org/package/streamline –