javascript - Zeit 的 "micro"从未解决 promise

标签 javascript node.js promise microservices

我正在为一小段代码挠头,它永远不会解决 promise。它甚至没有告诉我 promise 可能被拒绝了。

const https = require('https'),
    {
        json
    } = require('micro')

module.exports = async () => {
    let response = https.get('https://jsonplaceholder.typicode.com/posts/1')
    const jsonData = await json(response, {
        encoding: 'utf8'
    })
    console.log(jsonData)
}

阅读documentation ,代码是正确的,只是我不明白为什么 promise 不记录响应,而终端只是闪烁光标。

感谢任何形式的帮助。

最佳答案

json 用于处理从传入请求到您的服务器的请求正文 (http.IncomingMessage)。 https.get 返回一个 ClientRequest。您需要使用https 的回调来获取响应:

https.get('https://jsonplaceholder.typicode.com/posts/1', async res => {
  const jsonData = await json(res, {
    encoding: 'utf8'
  });
  console.log(jsonData)
});

您可能想使用像 axios 这样的库来将 promises 与 IncomingMessage 集成

const { data } = await axios({ url, responseType: 'stream' });
const jsonData = await json(data, { encoding: 'utf8' });

但是请注意,axios 和其他此类库也内置了响应的 JSON 解析。

关于javascript - Zeit 的 "micro"从未解决 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48571805/

相关文章:

javascript - Momentjs格式化力矩对象并保持偏移

javascript - Youtube API 3.0 流行上传

node.js - Sailsjs 套接字 IO

javascript - Node.js 服务器出现脚本和图像问题

javascript - 保证不开火

javascript - 如何更改按钮的 onclick 属性引用的功能?

没有列名的javascript序列化

javascript - 关于 JavaScript promises 和 "then"语句的新手问题

node.js - Nodejs Lodash map 同步请求

javascript - ES6 Promises 和 PEP3148 Futures 的链式差异