我正在使用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(); }
此代码不起作用,因为它不等待Request的回调继续.我需要先完成请求next()
;
这些是要求:
在结束时exports.hook_data
必须返回next()
.但它只需要在请求后返回它.
我需要返回一个Buffer
in add_body_filter
但是我需要创建一个缓冲区,其中包含从服务器获取的信息.
要获取Get Request,我需要使用header
我内部只有的参数()add_body_filter
.
所以问题是我之前无法发出请求add_body_filter
并将结果放在回调中,因为我需要发出请求的参数只在里面add_body_filter
.
有什么建议吗?