2013-08-12 3 views
0

왜이 배열 푸시가 작동하지 않는지에 집착하고 있습니다 ... 어떤 도움을 주신가요?자바 스크립트 배열 푸시가 작동하지 않습니다.

var addons = new Array(); 

    myService.addon_dependencies(arr[i]['addoncode']).then(function(dependency) { 
     console.log(dependency[0].addon_depend); //returns A6002 
     addons.push(dependency[0].addon_depend); 
    }); 

    console.log(addons); //returns [] 
+0

jsFiddle.net 예제를 만들 수 있습니까? – j08691

+5

비동기 문제 ..... – zsong

답변

3

console.log을 실행하기 전에 addon_dependencies 방법이 완료되지 않았기 때문입니다. then 메서드는 아마도 일종의 약속 프레임 워크를 사용하고 있음을 보여줍니다. then 블록에 인쇄하면 제대로 작동합니다.

+0

'push'가'then' 블록에 있으므로'push'가 작동합니다. 두 번째'log' 문은 그렇지 않으므로'then' 블록이 끝나기 전에'log' 문이 발생합니다. 푸시가 제대로 작동하고 있으며 올바른 위치에 로그인하지 않은 것입니다. 'addons.push' 바로 다음에 로그를 넣으면 제대로 표시됩니다. –

+0

그게 다 ... 고마워. – suncoastkid

1

Array.push; 코드가 비동기 적으로 실행되어야하므로 비어있는 addons이 실행되어야합니다.

0

console.log (addons)는 항목이 배열로 푸시되기 전에 실행됩니다. 그래서 빈 배열을 보게됩니다. 새 항목을 콘솔에 넣은 후 console.log를 시도하십시오.

관련 문제