【问题标题】:Wait HTTP response to resolve function等待 HTTP 响应来解析函数
【发布时间】:2017-10-20 06:42:11
【问题描述】:

我正在使用 express.js 创建一个代理服务器来处理来自网站的调用,处理请求,然后向第三方提供商发出请求。我需要等待第三方响应才能响应我的网站,但找不到快速等待响应的方法。

我的控制器文件是

const model = require('../models/ticketmaster')

const startHour = 'T00:00:00Z'
const endHour = 'T23:59:59Z'

function getData(req, res) {
model({ startDateTime: req.query.startDateTime + startHour, endDateTime: req.query.endDateTime + endHour},res)
res.status(200).send()
}

module.exports = getData;

模型文件是

const request = require('request');
const config = require ('../config.js');

 module.exports = (req, res) => {

 request.get(`${config.ticketmasterApiUrl}&startDateTime=${req.startDateTime}&endDateTime=${req.endDateTime}`)
 .on('finished', (res) => {
        console.log(res.status)
    })
    .pipe(res)
}

【问题讨论】:

  • 我很困惑。你不是只需要删除res.status(200).send()这行吗?
  • 通过这样做,我收到错误“未处理的拒绝 StatusCodeError: 400”
  • 这听起来像是 Promise 的问题,但我在您的代码中没有看到任何 Promise,而且 request 没有使用 Promise。

标签: express callback es6-promise requestjs


【解决方案1】:

改变这个:

request.get(`${config.ticketmasterApiUrl}&startDateTime=${req.startDateTime}&endDateTime=${req.endDateTime}`)
 .on('finished', (res) => {
        console.log(res.status)
    })
    .pipe(res)

收件人:

request.get(`${config.ticketmasterApiUrl}&startDateTime=${req.startDateTime}&endDateTime=${req.endDateTime}`)
       .pipe(res)

默认情况下它只在请求返回后才管道,所以你不需要on.('finished'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-28
    • 2017-11-19
    • 1970-01-01
    • 1970-01-01
    • 2017-11-24
    • 2018-06-03
    • 2019-08-10
    • 1970-01-01
    相关资源
    最近更新 更多