2017-11-25 4 views
0

데이터베이스에서 정보를 인쇄하고 싶습니다. 나는 이렇게하고있다 : 나는 itmes의 세계적인 배열을 가지고있다. 1. 모든 레코드를 페치하고 전역 배열에 레코드 데이터를 넣는 서버에 ajax get 요청 기능. 2. 전역 배열의 데이터를 인쇄하는 함수. 이 모든 빠르게 실행되도록 내 모든 컴퓨터에서이 작업을 실행하고 나는 문제가 그나마 :javascript : 다른 비동기 함수의 결과가 필요한 함수를 실행하십시오.

var items = [] 
function initPage() { 
    getData();/function that gets data from database and put in array 
    printData();/function that prints data to html 
} 

내 질문입니다. 그러나 모두 인터넷으로 이동하고 쿼리가 느리게 실행되는 경우 printData 함수에 문제가 있습니까? getData가 완료되기 전에 실행될 수 있습니까? 또는 getData가 완료 될 때까지 기다리는 중입니까?

이런 종류의 상황을 처리하는 가장 좋은 방법은 무엇입니까? getData 시간 또는 타임 아웃의 시간이 걸릴 수 있기 때문에

감사 아론은

+0

시겠습니까 함수'getData()'와'printData()'를 게시 하시겠습니까? 당신은'printData()'를'getData()'로 보내고 응답을받을 때를위한 이벤트 핸들러로 만들 수 있습니다. – TheMintyMate

답변

1

예, 아주 잘 printData 기능에 문제가있을 수 있습니다.

자바 스크립트 약속 :-) 이러한 상황에서 당신의 가장 친한 친구입니다

당신이 뭔가를해야 getData 기능 :

function getData() { 
    var url = 'http://blah.com/blah'; 
    return new Promise((resolve, reject) => { 
    const xhr = new XMLHttpRequest(); 
    xhr.open("GET", url); 
    xhr.onload =() => resolve(xhr.responseText); 
    xhr.onerror =() => reject(xhr.statusText); 
    xhr.send(); 
    }); 
} 
는 다음과 같이 코드를 변경

:

var items = [] 
function initPage() { 
    getData().then(
    function(data) { 
     printData(data); 
    }, 
    function(error) { 
     printMessage(error); 
    } 
); 
} 
관련 문제