[英]Node.js return data to async function fails
运行下面的代码后,在console.log中未定义。
我试图返回已解决的Promise,但失败了。 没有错误。
控制台输出为:getData():未定义
谁能发现我的问题?
function getData(){
var url = 'https://pigfox.com/api/v1/test';
https.get(url, res => {
res.setEncoding("utf8");
res.on('data', data => {
return new Promise(resolve => {
resolve(data);
});
});
});
}
async function go(){
var rs = await getData();
console.log('getData(): ' + rs);
}
go();
您可以将await
视为“解开”承诺。 目前,您的getData
不会返回Promise
,因此没有什么可“解包”的。 尽管确实在函数中return new Promise
,但实际上是在返回内部回调函数,而不是外部getData
函数。
因此,您需要将.get
方法包装在Promise中,并解析数据:
function getData() {
var url = 'https://pigfox.com/api/v1/test';
return new Promise(resolve => { // getData returns a promise
https.get(url, res => {
res.setEncoding("utf8");
res.on('data', data => {
resolve(data); // resolve data which can be "unpacked" using await
});
});
});
}
async function go() {
var rs = await getData(); // now we can "unpack" the promise
console.log('getData(): ' + rs);
}
go();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.