2017-10-01 2 views
0

비동기/함수 내에서 조금만 사용했습니다. 콜백에 대해 알고 있지만 어떤 이유로 나는 내가하고 싶은 것을 얻을 수 없습니다. 이것은 본질적으로 내가하고 싶은 일입니다.비동기 자바 스크립트가 내 마음을 불고 있습니다

T.get('friends/ids', myAcc, function(err, data, response){ 
    friends = data; 
}); 
console.log(friends); 

친구를 만나기 전에 콘솔 로그가 어떻게됩니까?

내가 이렇게하면 내가 아는

, 그것은

T.get('friends/ids', myAcc, function(err, data, response){ 
    console.log(data); 
}); 

을 작동하지만 나는 그것의 자기 완료하는 기능을 기다릴 수 있습니까? 그들을 다른 async/aawait 함수로 둘러싸 지 않고?

+2

가 왜 콜백 내부의 로그를 싶지 않아 Promise 생성자 사용할 수 있습니까? 콜백의 포인트는 비동기 작업이 완료되고 데이터가 사용 가능할 때까지 호출되지 않는다는 것입니다. – nnnnnn

+0

나중에 사용할 수 있도록 정보를 저장하고 싶습니다. –

+0

그런 다음 데이터를 나중에 같은 방식으로 검색하는 다른 dat 세트와 비교하는 데 데이터를 사용해야합니다. 필자는 이러한 데이터 집합이 완전히로드되기를 기다렸다가 그 데이터 집합으로 무엇인가를하기를 기다리고 싶습니다. 나는 이것에 대해 어떻게 생각할 것인가? –

답변

0

당신은

(async() => { 
    let friends = await new Promise((resolve, reject) => { 
        T.get('friends/ids', myAcc, function(err, data, response) {    
        if (err) { 
         reject(err); 
         return; 
        } 
        resolve(data); 
        }); 
       }).catch(err => err); 
    console.log(friends); 
})();