본문 바로가기

Develop Error/Solved

[JavaScript] TypeError: Cannot read property 'then' of undefined

진짜 짜증났던 에러

JavaScript에서 POST 요청을 통해 JSON 형식의 값을 받아 온 다음에 다른 JavaScript 함수가 실행됬어야 했던 문제

JavaScript 비동기는 처음 해보는지라 구글링을 통해 헤매다가 해결


POST 요청 JavaScript

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function post_api(){
    var xhttp = new XMLHttpRequest();
    var url = "URL";
    
    return new Promise((resolve, reject) => {
        xhttp.onreadystatechange = function() {
             if (this.readyState == 4 && this.status == 200) {
                var jsonObj = JSON.parse(this.responseText);
            
                // 성공
                resolve("성공");
 
                // 실패
                //resolve("실패");
             }
        };
        
        xhttp.open("POST", url, true);
        xhttp.setRequestHeader("Content-type""application/json");
        
        // POST 요청 JSON
        var request_data = JSON.stringify({"key" : value});
        xhttp.send(request_data);
    });
}
cs


POST 요청 후 실행 JavaScript

1
2
3
4
5
6
7
8
9
<script>
function print_result(result){
    console.log(result);
}
 
post_api().then(resolve_result =>{
    print_result(resolve_result);        
}
</script>
cs

추후 JavaScript 공부 후 에러가 발생한 이유에 대해 고민 할 것