【问题标题】:How can I use the "http" module in koa?如何在 koa 中使用“http”模块?
【发布时间】:2016-03-31 22:00:17
【问题描述】:

我正在尝试使用 koajs 框架在节点上使用 http.request。有没有办法可以使用它,如下所示?

var http = require('http');

var result = yield http.request(options);

【问题讨论】:

    标签: javascript node.js koa


    【解决方案1】:

    大概您面临的问题是http.request 接受回调而不是返回承诺,因此您不能从koa 中yield 它。您需要将http.request 包装在一个返回promise 的函数中,并将promise resolve 挂钩到回调中,同时还将promise reject 挂钩到错误处理程序中。

    function request(opts, body) {
      return new Promise((resolve, reject) => {
        body.pipe(http.request(opts, resolve))
        .on('error', reject);
      });
    }
    

    ...稍后在您的 koa 函数中...

    var response = yield request(opts, body);
    

    这方面有很多可能的变体,我无法将它们全部列出,但这是基本思想:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-20
      • 2021-02-28
      • 2020-05-22
      • 2012-01-17
      • 2015-05-08
      • 2020-01-26
      • 2015-10-21
      • 2017-05-27
      相关资源
      最近更新 更多