2017-12-20 1 views
1

저는 axix를 사용하여 twitchtvapi에 AJAX 요청을합니다. 저는 example이라는 변수에 약속을 지정했습니다.약속의 가치를 얻으시겠습니까?

Promise 개체 내부에서 데이터를 가져올 수 있습니까? .then 메소드를 promise 객체에 연결하면 나는 .then이 함수가 아님을 알게된다.

내가 예를 들어 변수를 로그인하면 내가

var example = users.map((item) => axios.get(`https://api.twitch.tv/kraken/streams/${item}?client_id=${client_id}`) 
 
    .then(res => { 
 
    console.log(res.data.stream); 
 
    return res.data.stream; 
 
    }) 
 
    .catch(error => { 
 
    console.log(error); 
 
    })); 
 
console.log(example); //an array of three Promise objects 
 
console.log(example.then(res => res.data)) //returns error example.then is not a function
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

TLDR 비슷한 배열로 저장하기 위해 찾고 있어요 값으로 세 가지 약속이 있다는 것을 볼 수 있습니다; Promise 객체에서 데이터를 가져 오는 방법은 무엇입니까? .then 메서드를 연결하려고하면 함수가 아니라는 오류가 발생합니다.

사전에 도움을 주셔서 감사합니다.

+2

를 사용할 수있는'배열에 then''가 아닌 약속, 수익을지도'있다. 맵핑 함수 안에서'then'을 사용하거나'example'을 통해'map'을'then'해야합니다. – Carcigenicate

+0

변수는 Promise.all()과 같은 것을 사용하여 약속을 하나 만들면 3 개의 약속으로 이루어진 배열입니다. 나는 그때의 방법을 사용할 수는 있지만 결과는 또 다른 약속이다. – RIVERE

+1

'Promise.all (예) .then (결과 => console.log (결과)); ' –

답변

2

다음 코드

users.map((item) => axios.get(`https://api.twitch.tv/kraken/streams/${item}?client_id=${client_id}`) 

는 약속의 배열을 반환합니다. 그 자체로 배열은 약속이 아닙니다. 당신은 모든 약속이 해결 된 후 일부 코드를 실행하려면, 당신은 당신이 전화하는거야처럼 보이는 Promise.all

Promise.all(users.map(...)) 
    .then((responses) => { 
    // deal with responses[0].data 
    //   responses[1].data 
    // etc. 
    }) 
    .catch((error) => { 
    // deal with error that occurred 
    }); 
관련 문제