을 호출하면 더 나은 방법으로 백본을 사용할 수 있습니다 .js 우리는 특정 상황에서 클라이언트 웹 서비스에 아약스 게시물을 보내야하는 응용 프로그램이 있습니다.자바 스크립트 : X 비동기 데이터베이스/아약스 호출 후
그러나 게시 할 콘텐츠는 동적이며 특정 배열에 의해 결정됩니다.
배열의 각 항목에 대해 데이터 조각을 가져와야합니다.
집합 개체를 전송해야하는 데이터를 어셈블 한 후
지금은 동기식 접근 방식을 사용하고 있지만 이것이 최선의 방법은 아닐 것이라고 생각합니다.
var arrParams = [{id: 1, processed: false},{id: 7, processed: false},{id: 4, processed: false}];
function callback(data) {
$.post()... // jquery ajax to post the data... }
function fetchData(arr, data, callback) {
var currentId = _(arr).find(function(p){ return p.processed === false; }).id; // getting the ID of the first param that has processed on false...
// ajax call fetching the results for that parameter.
$.ajax({
url: 'http://mysuperwebservice.com',
type: 'GET',
dataType: 'json',
data: {id: currentId},
success: function(serviceData) {
data[currentId] = serviceData; // insert it into the data
_(arr).find(function(p){ return p.id === currentId; }).processed = true; // set this param in the array to 'being processed'.
// if more params not processed, call this function again, else continue to callback
if(_(arr).any(function(p){ return p.processed === false }))
{
fetchData(arr, data, callback);
}
else
{
callback(data);
}
},
error: function(){ /* not important fr now, ... */ }
});
}
fetchData(arrParams, {}, callback);
이 호출을 비동기로 실행하고 모든 결과가 들어있을 때만 콜백을 실행할 수있는 방법이 없습니까?
와우 ... 난 이것에 대해 알고하지 않았다 .. 그것을 좋다! – fguillen
예 지연이 좋음) –
도 아약스없이 작동합니까? 로컬 데이터베이스로 이동하는 상황을 볼 수 있습니다.이 데이터베이스에서는 함수가 별도의 데이터베이스 호출을 기다려야하는 상황에 처해 있습니다. 비록 내가 실제로 여러 아약스 호출을 기다리는 좋은 방법이라고해야만합니다. – Sander