2016-06-27 2 views
1

이것은 SharePoint 2013에서 목록 항목을 가져 오는 데 사용되는 스크립트의 일부입니다. 두 개의 다른 목록을 테스트하려고하는데 두 가지 다른 익명 기능이 있습니다. 두 번째 기능에서 사용할 첫 번째 기능에서 변수을 설정하는 방법을 알아낼 수 없습니다. 문자열이 비어 있다고 생각하기 때문에 항상 두 번째 함수에서 if 문을 수행합니다. 왜 이런 식으로? 나는 이것에 대해 이야기하고있는 것 같습니다.JS - 익명 함수 내에서 전역 변수를 설정 하시겠습니까?

var pLead = ""; 

$(function() { 

    $.ajax({ 
      url: "__URL__", 
      headers: {"Accept": "application/json;odata=verbose"}, 
      type: "GET", 
      cache: false,  

    }).success(function (data) { 
     $.each(data.d.results, function(key, value) { 
     pLead = "TESSTT"; 
     }); 
    }); 
}); 

$(function() { 

    $.ajax({ 
      //DTIM Projects page 
      url: "__URL__", 
      headers: {"Accept": "application/json;odata=verbose"}, 
      type: "GET", 
      cache: false,  

    }).success(function (data) { 
     $.each(data.d.results, function(key, value) { 
      if (pLead.length === 0) { $("#ProjectLead").html(value.PL); } 
      else { $("#ProjectLead").html(pLead); } 
     }); 
    }); 
}); 
+2

AJAX는 비동기입니다. 약속을 사용해야합니다. – Hoyen

+1

또는 콜백 또는 어떤 트릭을 사용 하시겠습니까? –

답변

1

디버깅에 사용하는 경우에도 함수 이름을 지정하는 것이 좋습니다. 첫 번째 함수가 완료 될 때 두 번째 함수가 호출되면 pLead 변수가 필요하지 않으며 두 번째 함수의 이름을 지정하고 첫 번째 함수의 success 또는 done 처리기에서 호출합니다.

function firstFunction() { 
    $.ajax({ ... }).done(secondFunction); 
} 
+0

... 및 * name * 해당 함수를 소스 코드에 넣으십시오. 따라서 두 함수가 함께 속해 있다는 것을 즉시 알 수 있습니다. 자유롭게 의견을 추가하여 자신이하고있는 일과 그 이유를 지적하십시오. –

관련 문제