Ric*_*olo 14 javascript callback node.js haraka
我正在使用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();
}
Run Code Online (Sandbox Code Playgroud)
此代码不起作用,因为它不等待Request的回调继续.我需要先完成请求next();
这些是要求:
exports.hook_data必须返回next().但它只需要在请求后返回它.Bufferin add_body_filter但是我需要创建一个缓冲区,其中包含从服务器获取的信息.header我内部只有的参数()add_body_filter.所以问题是我之前无法发出请求add_body_filter并将结果放在回调中,因为我需要发出请求的参数只在里面add_body_filter.
有什么建议吗?
除非你愿意使用同步、阻塞函数,否则不可能满足你所列的要求。
我会检查每个要求背后的原因,看看你是否以不同的方式实现你的目标。
从表面上看,仅查看您那里的代码,我会寻找一种方法来更改合同,exports.hook_data以便您能够next()从request.get回调内部进行调用。
| 归档时间: |
|
| 查看次数: |
390 次 |
| 最近记录: |