힝구힝구
233
2021-02-15 12:25:42 작성 2021-02-15 12:26:15 수정됨
5
441

비동기 처리 속에서 비동기 처리가 가능한가요?


안녕하세요, jsoup을 통한 json 파싱을 하려고 합니다.

다름아니라, jsoup 뿐만아니라 다른 비동기 처리 방식에서 중복으로? 사용이 가능한지 궁금합니다.

var url = '파싱할 URL'

     //데이터 파싱
      var data = org.jsoup.Jsoup.connect(url).ignoreContentType(true).get().text();
      data = JSON.parse(data);
    //파싱된 데이터가 없다면? 다른 APi 호출해서 파싱
      if(data["rows"].length == 0){
        soldUrl = '파싱할 다른 URL'
        var soldData = org.jsoup.Jsoup.connect(soldUrl).ignoreContentType(true).get().text();
        soldData = JSON.parse(soldData);

        if(soldData["rows"].length == 0){
          replier.reply("그런건 없음 ㅋㅋ")
        }

뭐.. 대략 이런느낌으로 짜봤는데, 결과적으로는 안되더라구요. 에러가 발생합니다.

그런데 이런식으로 비동기 처리가 돌아가는 중간에 그 안에서 다시 비동기 처리가 가능한? 방법이 있는지 궁금해서 여쭤봅니다. 뭐라고 말을 정의해야될지 모르겠네요..

구글에 '비동기 중복' 'ajax 중복' 등등으로 검색해봤는데 제대로 나오질않아서 여쭤봅니당.

0
  • 답변 5

  • 준호
    694
    2021-02-15 12:40:36
    콜백 패턴으로 구현하시면 됩니다.
  • 페코옹
    1k
    2021-02-15 12:50:09

    async await 으로 동기로 만들어서 하세요

  • 초급코드몽키
    459
    2021-02-15 12:52:56 작성 2021-02-15 12:53:14 수정됨

    콜백함수 부분에 ajax를 다시 선언해서 사용하면 구현가능합니다.

    곧 콜백지옥을 경험하시고 promise 패턴으로 넘어가시겠네요

    $.ajax({ 
    url : "URL",
    type: "GET", 
    success: function () { 
    // 콜백 함수 }, 
    error: function () { 
    // 콜백 함수 }
    });
  • 힝구힝구
    233
    2021-02-15 13:31:49

    으아... ㅠㅠ 비동기 처리 너무 어려운것 같습니다...

    아무튼 방법이 있군요 역시.. 감사합니다!

  • 컴포지트
    2k
    2021-02-15 14:23:18 작성 2021-02-15 14:26:03 수정됨

    jQuery 에 deferred 기능이 있습니다. promise 와 비슷합니다.

    $.ajax 및 각 단순 역할을 하는 메소드는 모두 deferred 객체를 반환합니다.

    물론 공식 promise 는 then 콜백만 되면 다 받기 때문에 jQuery deferred 를 promise 변환도 가능합니다.

    예)

    new Promise($.ajax({ 첫번째... })

      .then(function(data) { alert('첫번째 성공!'); return new Promise($.ajax({ 두번째...})); })

      .then(function(data) { alert('두번째 성공!'); })

  • 로그인을 하시면 답변을 등록할 수 있습니다.