1
다음은 내 코드입니다. 내가 사용자 데이터가 오기를 U는이 함수가 대기없이 반환 된 모든 refertype G의 5 개 기록과 refertype 5 기록을 데 때이벤트 구동 프로그래밍에서 실행 종료를 찾는 방법
db.query(str, arr, function selectCb(error, results, fields) {
if (error) {
return proceed(false, {errno:'010',message:error.message}, request);
}
for (var i=0; i<results.length; i++) {
// add the gib infor
if (results[i].refertype=='G') {
var input={};
input.fields="*";
input.gibname=results[i].refername;
gib.getgibinternal(input, makeCallback(i));
function makeCallback(index) {
return function(gresult) {
results[index].gib=gresult.data[0];
if (index==results.length-1) {
// becuase problem was comint in yapi enterothers it give onlye one result of gib
return proceed(true, results, request);
}
}
}
// add the user info
} else if(results[i].refertype=='U') {
var input={};
input.username=results[i].refername;
input.fields="*";
user.getuserinternal(input, makeCallbackuser(i));
function makeCallbackuser(index) {
return function(gresult) {
results[index].user=gresult.data[0];
if(index==results.length-1) {
return proceed(true, results, request);
}
}
}
}
}
if (results.length==0) {
return proceed(true, results, request);
}
});
});
이 코드의 문제입니다.
마지막으로 refeter 유형 G가 있고 사용자 데이터가 서버에서 늦게 오는 경우 최종 G가 도착하면 사용자 데이터없이 반환됩니다. 내가 원하는 것은 모든 쿼리를 실행 한 다음 값을 반환하는 것입니다. 어떻게하면됩니까?
어떻게 사용자 데이터가 올 때까지 기다릴 수 있습니까?
Pls가 비동기 라이브러리에서 사용할 수있는 기능을 제안합니다. – XMen