Ajax에서 응답을받는 문제

오므리

다음 코드가 있습니다.

  function f(){
      var value = "";
      var request1 = $.ajax({
           url : '/a',
           type: "GET"
      });
      var request2 = $.ajax({
          url: '/b', 
          type: 'GET',
      });

      $.when(request1, request2).done(function(result1, result2){

      //break point #1
      //result1 = [Object, "success", Object]
      //result2 = [Object, "success", Object]

      //do something
      })

     //break point #2
     //request1 = Object {readyState: 1}
     //request2 = Object {readyState: 1}

     return value
  }

내가 한 장소에서 중단 점을 result1 = [Object, "success", Object]벗어나면 나는 그것을 얻고 다른 장소에서 그것을 나가면 나는 그것을 얻습니다 request1 = Object {readyState: 1}. 위를 참조하십시오.

  1. 이 문제의 원인은 무엇입니까? 그 비동기 문제입니까?
  2. 반환 값을 매개 변수에 삽입하고 싶습니다. 예 : a = f(). 콜백으로해야 할 일입니까? 나는 그것에 관한 기사를 읽으려고 노력했지만 그것을 구현하지 못했기 때문에 도움을 받고 싶습니다. 자바 스크립트에 대한 경험이 많지 않아서 아직 구현하기 어려운 부분이 있습니다.
못쓰게 만들다

예, 이는 비동기 기능 때문입니다. 결과를 확인하든 반환 값을 변수에 서명하든 호출이 반환 된 후 실행하려는 모든 코드는 콜백 내에 배치되어야합니다. 중단 점 # 2에서는 비동기 호출을 '스텝 오버'하고 있으며이 호출의 상태를 제어 할 수 없습니다. 따라서 모든 코드를 콜백에, 즉 중단 점 1에 배치하십시오.

'f'함수의 결과를 변수에 할당하려면 (예 : var r = f (), 비동기 ajax 호출에 따라 f를 사용하려면 jQuery의 Deferred 객체를 사용하여 'f'함수를 비동기 함수로 전환해야합니다.) 또는 약속에 내장 된 ES6를 사용합니다. 이렇게 하면 모든 ajax 요청이 해결되는 f가 해결 될 때 f의 결과를 할당 할 수 있습니다 .

다음 코드 스 니펫에서는 작동 스 니펫으로 변환하기 위해 비동기 함수로 대체하여 ajax 호출을 시뮬레이션했습니다. 나는 f가 Deferred 객체를 반환하도록함으로써 비동기 함수로도 바꿨습니다.

$(document).ready(function() {
  function f() {
    var value = $.Deferred(); //this is the result this function will return
    
    //simulate ajax call 1
    var request1 = function() {
      var result = $.Deferred();
      result.resolve("this is the result of request 1");
      //result.reject("something went wrong in request 1");
      return result;
    };
    //simulate ajax call 2
    var request2 = function() {
      var result = $.Deferred();
      result.resolve("this is the result of request 2");
      //result.reject("something went wrong in request 2");
      return result;
    };

    $.when(request1(), request2()).done(function(result1, result2) {
      alert("result 1: " + result1);
      alert("result 2: " + result2);
      value.resolve(result1 + ' ' + result2); //assuming the result of the f function is a concatenation of both requests
    }).fail(function(err) {
      alert("error occurred while executing request 1 or 2: " + err);
      value.reject(err);
    });


    return value;
  }
  
  
  //call f function. Asign result asynchronously
  $.when(f()).done(function(result) {
    //f has 'resolved'
    alert("result of f: " + result);
  }).fail(function(err) {
    alert("error while executing f: " + err);
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

$ .get ()에서 응답을받는 문제

분류에서Dev

Python에서 udp 클라이언트로 127.0.0.1에서 응답을받는 문제

분류에서Dev

하이퍼 레저 패브릭 getStateByRange에서 응답을받는 데 문제가 있습니다.

분류에서Dev

Mongo / Node의 cursor.toArray ()에서 응답을받는 데 문제가 있습니다.

분류에서Dev

AJAX 성공에서 JSON 응답을 받았지만 구문 분석이 아님

분류에서Dev

Ajax 응답을 div에 채우는 문제

분류에서Dev

POST API 호출을 만드는 비동기 메서드에서 응답, 본문 및 오류 받기

분류에서Dev

jquery ajax 요청에서 응답을받는 방법

분류에서Dev

AJAX가 아닌 POST를 제출하고 jQuery에서 JSON 응답을받을 수 있습니까?

분류에서Dev

자바 프록시-호스트 / 소켓 문제에서 응답을받을 수 없음

분류에서Dev

응답 본문에 잘못된 JSON을 제공하는 Internet Explorer

분류에서Dev

요청 받기에 대한 응답 헤더에 표시 할 콘텐츠 인코딩을 가져 오는 데 문제가 있습니다.

분류에서Dev

Ajax에서 문자열 응답을 얻는 방법은 무엇입니까?

분류에서Dev

AJAX를 사용하여 PHP에 문의하십시오. AJAX가 응답을받는 것처럼 작동하지 않습니다.

분류에서Dev

RestTemplate에서받은 JSON 응답을 구문 분석 할 수 없습니다.

분류에서Dev

AJAX 요청에서 응답을 받아 나가는 링크에 삽입

분류에서Dev

서버에서 데이터를받을 때 Ajax jquery 문제

분류에서Dev

Swift 3에서 서버에서받은 응답을 문자열에서 배열로 변환하는 방법은 무엇입니까?

분류에서Dev

JQuery Ajax를 사용하여 양식을 제출하고 xml 응답 받기

분류에서Dev

WooCommerce 관리자 주문 AJAX가 응답을받지 못합니까?

분류에서Dev

API 호출을하고 JSON 응답을받는 JavaScript 문제가 있습니다.

분류에서Dev

매분 동일한 응답을받는 데 문제가있는 Facebook Messenger BOT

분류에서Dev

Laravel에서 vue.js를 사용할 때 $ .ajax에서 성공 또는 응답 완료 문제

분류에서Dev

응답으로 같은 사람을 두 번 받고, 데이터베이스에서 1을 삭제하는 방법 ...

분류에서Dev

AJAX 호출을 사용하여 객체를 삭제할 때 200과 204의 2 개의 응답을받는 이유는 무엇입니까?

분류에서Dev

Heroku Rails 서버에서 내 응답을받는 데 50 초

분류에서Dev

POST 요청에 대해 PHP에서 응답을받는 방법

분류에서Dev

값 이름을 얻기 위해 Python에서 Alexa json 응답을 구문 분석하는 문제

분류에서Dev

Chatterbot에서 여러 응답을받는 방법

Related 관련 기사

  1. 1

    $ .get ()에서 응답을받는 문제

  2. 2

    Python에서 udp 클라이언트로 127.0.0.1에서 응답을받는 문제

  3. 3

    하이퍼 레저 패브릭 getStateByRange에서 응답을받는 데 문제가 있습니다.

  4. 4

    Mongo / Node의 cursor.toArray ()에서 응답을받는 데 문제가 있습니다.

  5. 5

    AJAX 성공에서 JSON 응답을 받았지만 구문 분석이 아님

  6. 6

    Ajax 응답을 div에 채우는 문제

  7. 7

    POST API 호출을 만드는 비동기 메서드에서 응답, 본문 및 오류 받기

  8. 8

    jquery ajax 요청에서 응답을받는 방법

  9. 9

    AJAX가 아닌 POST를 제출하고 jQuery에서 JSON 응답을받을 수 있습니까?

  10. 10

    자바 프록시-호스트 / 소켓 문제에서 응답을받을 수 없음

  11. 11

    응답 본문에 잘못된 JSON을 제공하는 Internet Explorer

  12. 12

    요청 받기에 대한 응답 헤더에 표시 할 콘텐츠 인코딩을 가져 오는 데 문제가 있습니다.

  13. 13

    Ajax에서 문자열 응답을 얻는 방법은 무엇입니까?

  14. 14

    AJAX를 사용하여 PHP에 문의하십시오. AJAX가 응답을받는 것처럼 작동하지 않습니다.

  15. 15

    RestTemplate에서받은 JSON 응답을 구문 분석 할 수 없습니다.

  16. 16

    AJAX 요청에서 응답을 받아 나가는 링크에 삽입

  17. 17

    서버에서 데이터를받을 때 Ajax jquery 문제

  18. 18

    Swift 3에서 서버에서받은 응답을 문자열에서 배열로 변환하는 방법은 무엇입니까?

  19. 19

    JQuery Ajax를 사용하여 양식을 제출하고 xml 응답 받기

  20. 20

    WooCommerce 관리자 주문 AJAX가 응답을받지 못합니까?

  21. 21

    API 호출을하고 JSON 응답을받는 JavaScript 문제가 있습니다.

  22. 22

    매분 동일한 응답을받는 데 문제가있는 Facebook Messenger BOT

  23. 23

    Laravel에서 vue.js를 사용할 때 $ .ajax에서 성공 또는 응답 완료 문제

  24. 24

    응답으로 같은 사람을 두 번 받고, 데이터베이스에서 1을 삭제하는 방법 ...

  25. 25

    AJAX 호출을 사용하여 객체를 삭제할 때 200과 204의 2 개의 응답을받는 이유는 무엇입니까?

  26. 26

    Heroku Rails 서버에서 내 응답을받는 데 50 초

  27. 27

    POST 요청에 대해 PHP에서 응답을받는 방법

  28. 28

    값 이름을 얻기 위해 Python에서 Alexa json 응답을 구문 분석하는 문제

  29. 29

    Chatterbot에서 여러 응답을받는 방법

뜨겁다태그

보관