내 웹 사이트에서 여러 변수를로드해야하는 API를 사용 중입니다. 각 변수는 이전 호출의 반환 값에 따라 다릅니다 (호출 1에서 반환 된 변수를 사용하여 호출 2 등을 만듭니다).API를 여러 번 호출해야하는 웹 페이지에 데이터로드
예 : 내 데이터를 모두 수집하기 위해 5 가지 API 호출을 만들고 각 호출은 이전 호출의 반환 값에 의존한다고 가정 해 보겠습니다. 그렇다면 내 경우에 나는 이렇게하고있다. 콜백 함수를 데이터를로드하는 첫 번째 함수에 전달하고 있습니다. 그런 다음이 함수는 첫 번째 API 호출을 수행합니다. 이 호출이 끝나면 두 번째 API 호출을 만드는 다음 함수에 콜백 함수를 전달합니다. 마지막 API 호출이 완료되면 콜백 함수가 호출 된 다음 모든 데이터가로드되었음을 알게됩니다. 당신이 콜백 함수는 먼 길로 전달됩니다 볼 수 있듯이
function loadData(cb){
//Make the first API call
Trello.get('/member/me/boards', function(boards){
myBoards = boards;
for(var i = 0; i < boards.length; i++){
//Make the second API call
Trello.get('/boards/' + board[i].id + '/lists', function(lists){
board[i].lists = lists;
//Then make the third and fourth and so on
.....
//When all calls are made call the callback function
cb();
});
});
}
: 코드에서이 같은 (아래 예에서 사용 있도록 내 응용 프로그램에서 Trello의 API를 사용하고 있습니다)를 볼 것 콜 스택. 데이터를로드하고 저장하는 더 좋은 방법이 있는지 궁금합니다. (현재는 모든 것을 큰 배열에 저장합니다). 그리고 API에서 대량의 데이터를로드하기위한 모범 사례는 무엇입니까?
P. 내 원래 코드에서 각 API 호출은 별도의 함수로되어 있지만 예제의 코드 양을 줄이기 위해 여기를 단순화했습니다.
동기화 루프의 비동기 호출은 항상 나쁜 생각입니다. 트리를 반복적으로 반복 할 수 있습니다 ... 그리고 데이터를 청크로 표시하는 것이 더 좋을 수도 있으므로 사용자는 그렇게 오래 기다릴 필요가 없습니까? –
모든 데이터를 표시하려면 먼저로드해야합니다. 하지만 for 루프에서 비동기 호출을 할 때의 의미를 이해합니다. – martin36