我试图从我的节点服务器返回koa到我的角度前端,这是api调用的结果。这是我的控制器,需要一个npm模块,可以访问他们的api。 Await应该等待结果而不是返回,我错了吗?我在之前的项目中做了类似的事情,但我在询问数据库中的数据。 为什么它不起作用?
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 undefined
ctx.status=200;
};
答案 0 :(得分:1)
你不能等待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);
});
});
现在它等待承诺得到解决或拒绝。