저는 작업중인 프로젝트에서 Q 모듈을 사용하여 약속을 구현했습니다. 나는 static 메소드 Q.fncall()을 사용하여 node.js 스타일 함수 (emr, result를 반환하는 콜백을 기반으로 함)에서 약속을 생성합니다. 약속 시간 초과 후 실행 중지
문제
I는 일정 시간 후, 상기 기능의 실행을 정지 할 필요가있다, 그래서 Q 모듈의 기능 "타임 아웃"을 사용했다. 따라서 x 시간이 지나면 done 함수의 "error"콜백이 실행되고 타임 아웃을 처리하게되지만 처리기가 더 이상 수신하지 않아도 최종 콜백에 도달 할 때까지 함수 자체가 계속 실행됩니다.질문 : 시간 초과가 실행 된 후 함수의 실행을 중지 할 수있는 방법이 있습니까? 타임 아웃 처리기에 변수를 설정하고 타임 아웃이 끝나면 함수를 계속 체크 할 수 있다는 것을 알았지 만, 이것을 달성하기위한 더 깨끗한 방법을 기대하고 있습니다.
Q.nfcall(test1, id)
.timeout(1000)
.done(
function (value) {
console.log("SUCCESS: " + value);
},
function (reason) {
console.log("ERROR " + reason);
},
function (progress) {
console.log("PROGRESS " + progress);
}
);
그리고 TEST1 기능 : 다음과 같이
코드는,의 setTimeout 내부의 코드를
function test1(id,callback){
db_rw_pool.query("SELECT * FROM table WHERE id=?",[id], function(err,result) {
if(err){
callback(err,null);
}
else {
setTimeout(function(){
console.log("I DON'T WANT YOU TO BRE PRINTED")
callback(null,result);
},2000);
}
return;
});
} 내 이상적인 상황에서
(..., 2000) 결코 실행해서는 안됩니다. 이것이 가능한가? 사전에
감사합니다.
어쨌든 훌륭한 답변을 주셔서 감사합니다. –