Я работаю над проектом, который использует Node.js для плагина Haraka (smtp server).
Это 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
вadd_body_filter
, но мне нужно создать буфер с информацией, полученной с сервера. - Чтобы получить запрос на получение, мне нужно использовать параметр (
header
), который у меня есть только внутриadd_body_filter
.
Итак, проблема в том, что я не могу выполнить запрос до add_body_filter
и поместить результат в обратный вызов, потому что параметр, который мне нужен для запроса, находится только внутри add_body_filter
.
Любые советы, пожалуйста?