为什么这个 async/await 版本的异步程序在 JS 中没有给出任何输出?
异步等待版本:
const https = require('https');
async function getDataFromServer() {
try {
const response = await https.get('https://jsonplaceholder.typicode.com/posts/1');
let data = '';
response.on('data', (chunk) => {
data += chunk;
});
response.on('end', () => {
console.log(data);
});
} catch (error) {
console.error(error);
}
}
getDataFromServer();
而其他两个版本有效吗?
回调版本:
const https = require('https');
function getDataFromServer(callback) {
https.get('https://jsonplaceholder.typicode.com/posts/1', (response) => {
let data = '';
response.on('data', (chunk) => {
data += chunk;
});
response.on('end', () => {
callback(data);
});
}).on('error', (error) => {
console.error(error);
});
}
getDataFromServer((data) => {
console.log(data);
});
承诺版:
const https = require('https');
function getDataFromServer() {
return new Promise((resolve, reject) => {
https.get('https://jsonplaceholder.typicode.com/posts/1', (response) => {
let data = '';
response.on('data', (chunk) => {
data += chunk;
});
response.on('end', () => {
resolve(data);
});
}).on('error', (error) => {
reject(error);
});
});
}
getDataFromServer().then((data) => {
console.log(data);
}).catch((error) => {
console.error(error);
});
谢谢。
我尝试了三个版本的JavaScript简单异步编程示例(callback、promise和async-await),但我不明白为什么async/await版本不能给出与其他两个版本相同的结果?即,控制台窗口中什么也没有出现。