为什么在request.post之后修改请求

时间:2016-09-21 12:24:08

标签: javascript node.js express request

尝试理解他人创​​建的代码时的新手问题。相信我,我试着理解这一点。这就是..

在我们得到我们需要的.post()并且已经发送了响应之后,有人还会在Request - module中调用像.qs()和.json()之类的函数。它们不会影响request.post,因为它们之后被调用,它们可以吗?

凭借我的技能,我无法从响应模块API文档(v2.22.0)中了解这些实际操作的内容。

这不是整个代码,但我试图在这里找到重要的部分:

// When request comes to /getthisapge, make external query and return data in JSON format.
var request = require('request');
module.exports = function(app) {
  app.get('/getthispage', function(req, res, next) {
    var filter = {};
    var query = {};
    filter.category = req.query.category;
    query.onBehalf = req.query.onBehalf;
    request.post(URIandoptions, function(error, response, body) {
      res.json(body.members)
    }).qs(query).json(filter);
  }
}

1 个答案:

答案 0 :(得分:1)

如果不确切知道post函数的作用(对你的问题不必要),你需要查看执行的顺序。

request.post(URIandoptions, function (error, response, body){ 
    res.json(body.members) 
}) 
.qs(query)        //  ?
.json(filter);    //  ?

传递到post()的函数不会在特定时刻被调用。这是post()函数可以随意使用的。这在技术上意味着可能永远不会调用该函数(取决于api)。

返回先前函数时,

qs()json()都会被调用。通常这种类型的api意味着以下内容:

  • 调用post(),传入要在完成时运行的函数
  • 致电qs()以设置查询详情
  • 调用json()告诉帖子功能如何操作,然后执行实际帖子,在检索数据后运行完成功能。