prototype으로 정의한 method에 setTimeout 설정하기.
javascript 삼매경에 빠져있다.
그러나 setTimeout은 동기적으로 동작해서 20ms뒤에 submitStep2() 를 수행하려 할 때쯤엔 이미 submitForm method 의 영역을 벗어나서 submitStep2() 를 processForm이 아닌 다른 곳에서 찾으려 할 것이다.
그렇다면 submitStep2()를 수행하려면 어떻게 해야할까?
답은 using setTimeout when using prototype 에서 찾을 수 있었다.
마지막 submitForm 을
과 같이 바꾸어 주면 된다.
그러면 self는 여전히 processForm을 가리킬 것이고 submitStep2()는 정상적으로 수행된다.
processForm=function(inservleturl) {현재 이 소스코드에서 submitForm 은 20ms 뒤에 submitStep2() 를 수행하려 할 것이다.
this.inservleturl = inservleturl;
this.submitForm();
}
processForm.prototype.submitForm2=function() {
}
processForm.prototype.submitForm=function() {
setTimeout("submitStep2()", 20);
}
그러나 setTimeout은 동기적으로 동작해서 20ms뒤에 submitStep2() 를 수행하려 할 때쯤엔 이미 submitForm method 의 영역을 벗어나서 submitStep2() 를 processForm이 아닌 다른 곳에서 찾으려 할 것이다.
그렇다면 submitStep2()를 수행하려면 어떻게 해야할까?
답은 using setTimeout when using prototype 에서 찾을 수 있었다.
마지막 submitForm 을
processForm.prototype.submitForm=function() {
var self = this ;
setTimeout(function() { self.submitStep2() }, 20);
}
과 같이 바꾸어 주면 된다.
그러면 self는 여전히 processForm을 가리킬 것이고 submitStep2()는 정상적으로 수행된다.
반응형