async / await 版本的 https.get vs promise 版本 vs 异步 JavaScript 编程中的回调版本

问题描述 投票:0回答:0

为什么这个 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版本不能给出与其他两个版本相同的结果?即,控制台窗口中什么也没有出现。

javascript async-await promise callback
© www.soinside.com 2019 - 2024. All rights reserved.