Javascript Node.js将数据返回到异步函数失败
运行下面的代码后,我在console.log中得到了未定义的代码 我试图回报一个已决定的承诺,但它失败了。没有错误 控制台输出为:getData():未定义 有人能发现我的问题吗Javascript Node.js将数据返回到异步函数失败,javascript,node.js,promise,async-await,Javascript,Node.js,Promise,Async Await,运行下面的代码后,我在console.log中得到了未定义的代码 我试图回报一个已决定的承诺,但它失败了。没有错误 控制台输出为:getData():未定义 有人能发现我的问题吗 function getData(){ var url = 'https://pigfox.com/api/v1/test'; https.get(url, res => { res.setEncoding("utf8"); res.on('data', data => {
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();
您可以将
wait
视为“打开”承诺。目前,您的getData
没有返回Promise
,因此没有需要“解包”的内容。虽然在函数中返回新的Promise,但实际上返回的是内部回调函数,而不是外部的getData
函数
因此,您需要将.get
方法包装在承诺中,并解析数据:
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();
您可以将
wait
视为“打开”承诺。目前,您的getData
没有返回Promise
,因此没有需要“解包”的内容。虽然在函数中返回新的Promise,但实际上返回的是内部回调函数,而不是外部的getData
函数
因此,您需要将.get
方法包装在承诺中,并解析数据:
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();