2017-12-10 20 views
0

koa를 사용하여 노드 서버에서 api 호출 결과를 내 앞쪽 끝에 반환하려고합니다. 다음은 API에 대한 액세스를 제공하는 npm 모듈이 필요한 컨트롤러입니다. 결과를 기다려야하고 기다리는 것이 틀림 없습니다. 나는 이전 프로젝트에서 비슷한 것을했지만 데이터베이스에서 데이터를 요청하고있었습니다. 저는 일주일 동안 노드를 사용하고 있습니다. 아무도 왜 작동하지 않는지 도울 수 있습니까?ctx.body async/await 함수에서 undefind

const color = require('colourlovers'); 

exports.getAllColors = async (ctx) => { 
    ctx.res.body = await color.get('/color/FFFFFF', { format: 'json' }, (err, data) => { 
    console.log(data);//<---here is logging the data 
    return data; 
    }); 
    console.log(ctx.res.body);//<---here is udefined 
    ctx.status=200; 
}; 

답변

1

thks 대신 약속의 콜백 사용하기 때문에 당신은 color.get을 기다리고 수 없습니다 (물론, 당신 그것을 기다리고 있습니다,하지만 당신이 기대하는 것을하지 않음). 그래서 await를 사용하여, 당신은 약속을 직접 구축 할 필요가 : 약속 해결하거나 거부하는

ctx.res.body = await new Promise((resolve, reject) => { 
    color.get('/color/FFFFFF', { format: 'json' }, (err, data) => { 
     if(err) reject(err); 
     else resolve(data); 
    }); 
}); 

지금은 기다릴 것이다.