我正在一个将 Node.js 用于Haraka(一个 smtp 服务器)插件的项目中工作。
这是 Node.JS,我在回调方面有一点问题。我无法将此特定代码转换为使用回调。
所以,这是我拥有的代码:
exports.hook_data = function (next, connection) {
connection.transaction.add_body_filter('', function (content_type, encoding, body_buffer) {
var header = connection.transaction.header.get("header");
if (header == null || header == undefined || header == '') return body_buffer;
var url = 'https://server.com/api?header=' + header ;
var request = require('request');
request.get({ uri: url },
function (err, resp, body) {
var resultFromServer = JSON.parse(body);
return ChangeBuffer(content_type, encoding, body_buffer, resultFromServer);
}
);
});
return next();
}
此代码不起作用,因为它不等待请求的回调继续。我需要先完成请求next()
;
这些是要求:
- 最后
exports.hook_data
是强制返回next()
。但它只需要在请求后返回它。 - 我需要返回一个
Buffer
inadd_body_filter
但我需要使用从服务器获取的信息创建缓冲区。 - 要发出获取请求,我需要使用
header
我只有在里面的参数 ()add_body_filter
。
所以问题是我不能在之前发出请求add_body_filter
并将结果放在回调中,因为我需要发出请求的参数只在里面add_body_filter
。
请问有什么建议吗?