[英]Why modify request after request.post
尝试理解他人创建的代码时出现的新手问题。 相信我,我试图理解这一点。 开始..
出于什么原因,在我们使用.post()获得所需内容并发送响应之后,仍然有人会在Request模块中调用.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);
}
}
在不确切知道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()
来告诉post函数如何执行操作,然后依次执行实际的post,并在检索到数据后运行完成函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.