我一般都是nodejs和javascript的新手。我相信这是一个我不理解的范围的问题。
鉴于此示例: ... ...
if (url == '/'){
var request = require('request');
var body_text = "";
request('http://www.google.com', function (error, response, body) {
console.log('error:', error);
console.log('statusCode:', response && response.statusCode);
console.log('body:', body);
body_text=body;
});
console.log('This is the body:', body_text)
//I need the value of body returned from the request here..
}
//OUTPUT
This is the body: undefined
我需要能够从响应中获取正文,然后进行一些操作,我不想在请求函数中执行所有实现。当然,如果我将日志行移动到:
request( function { //here })
有效。但我需要在请求之外以某种方式返回身体。任何帮助,将不胜感激。
答案 0 :(得分:0)
你不能用回调来做到这一点,因为这将异步工作。
使用回调在JS中是很正常的。但你可以用Promises做得更好。
您可以使用request-promise-native通过async / await执行您想要的操作。
async function requestFromClient(req, res) {
const request = require('request-promise-native');
const body_text = await request('http://www.google.com').catch((err) => {
// always use catches to log errors or you will be lost
})
if (!body_text) {
// sometimes you won't have a body and one of this case is when you get a request error
}
console.log('This is the body:', body_text)
//I need the value of body returned from the request here..
}
如您所见,您始终必须在函数范围内使用promises中的async / await。
建议: