我目前正在尝试使用npm请求模块发送一些请求。 正常的回调变体工作得非常好但我无法对异步等待做同样的事情。
起初我尝试使用'request-promise-native'模块,但我甚至无法运行正常的承诺示例。
var request = require('request-promise-native');
request(login)
.then(function (response) {
console.log("Post succeeded with status %d", response.statusCode);})
.catch(function (err) {
console.log("Error");
});
我不确定我做错了什么,但调用.then函数并且响应属性完全为空。如果我查看webstorm调试,我只会在该值中看到giberisch。。截图:
我的最终目标是使用npm请求模块:
var result =等待请求(登录);
结果是响应或错误,如果不可能我也可以使用仅承诺变体。
有人可以告诉我我做错了什么或如何正确地做到了?
此致 Ruvi
编辑:好的,我发现第一个问题是什么。 我正在联系的服务器发送gzip信息,我需要将gzip = true放在我的选项对象中,现在我得到了一个可读的答案。 但我的问题没有解决:
如果我使用:
req(login, function(error, response, body){
if (error)
console.log(error);
console.log(body);
console.log(response.statusCode);
});
我得到完整的请求和响应对象。来自Request模块。 如果我使用:
var result = await req(login);
我得到了请求对象,但没有响应对象和响应头信息。
这只返回响应体,只填充了一个变量:
request(login)
.then(function (response, body) {
console.log(response);})
.catch(function (err) {
console.log("Error");
});
如何获得承诺并等待将整个请求+响应对象返回给我?
答案 0 :(得分:3)
要获取完整的响应对象,必须添加:resolveWithFullResponse = true 到您传递给请求函数的选项对象
如果您使用:
var request = require('request-promise-native');
var result = await request(login);
//or
request(login)
.then(function (response, body) {
console.log(response);})
.catch(function (err) {
console.log("Error");
});
并且两者都正常,并返回完整的请求/响应对象。