gpt4 book ai didi

node.js - Bluebird - promisification - promisifyAll of 'email-templates' Node 模块 - 发送邮件

转载 作者:太空宇宙 更新时间:2023-11-04 00:55:34 26 4
gpt4 key购买 nike

我正在尝试将 email-templates Node 模块转换为 Promise。我正在使用 bluebird 进行 promise ,但它无法转换。

var emailTemplates = Promise.promisifyAll(require('email-templates'));

promisification Node 模块支持这种转换还是我做错了什么?

已编辑:

我现在正在这样做,但想将其转换为 Bluebird promise 。

var emailTemplates = require('email-templates');
var path = require('path');
var templatesDir = path.resolve(__dirname, '../..', 'assets/templates');
var postmark = require('postmark');

var postmarkKey = MY_POSTMARK_KEY;
var postmarkClient = postmark(postmarkKey);

module.exports = {
sendEmail : function (templateName, locals, callback) {
emailTemplates(templatesDir, function (err, template) {
if (err)
return callback(err, null);
else {
template(templateName, locals, function (err, html, text) {
if (err) {
return callback(err, null);
}
else {
postmarkClient.send({
From: locals.from,
To: locals.to,
Subject: locals.subject,
HtmlBody: html
TextBody: text
}, function (err, responseStatus) {
if (err) {
return callback(err, null);
}
else {
return callback(err, responseStatus);
}
});
}
});
}
});
}
}

最佳答案

emailTemplates 是一个函数,所以你会这样做:

var emailTemplates = Promise.promisify(require('email-templates'));

问题是它的表现不佳,因为函数本身有一个回调参数,所以你必须这样做:

emailTemplates().then(function(template){
Promise.fromNode(template.bind(null, "template-name")).then(...
});

关于node.js - Bluebird - promisification - promisifyAll of 'email-templates' Node 模块 - 发送邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30022234/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com