首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在javascript中使模块异步

如何在javascript中使模块异步
EN

Stack Overflow用户
提问于 2017-08-18 22:14:26
回答 1查看 280关注 0票数 0

我是javascript的新手。我有使用sendgrid发送电子邮件的简单模块:

代码语言:javascript
运行
复制
    // using SendGrid's v3 Node.js Library
// https://github.com/sendgrid/sendgrid-nodejs
var helper = require('sendgrid').mail;
var fromEmail = new helper.Email('test@test.com');
var toEmail = new helper.Email('sample@sample.com');
var subject = 'Sending with SendGrid is Fun';
var content = new helper.Content('text/plain', 'and easy to do anywhere, even with Node.js');


var mail = new helper.Mail(fromEmail, subject, toEmail, content);

var sg = require('sendgrid')("**********************");
var request = sg.emptyRequest({
  method: 'POST',
  path: '/v3/mail/send',
  body: mail.toJSON()
});

sg.API(request, function (error, response) {
  if (error) {
    console.log('Error response received');
  }
  console.log(response.statusCode);
  console.log(response.body);
  console.log(response.headers);
});

现在我想以异步的方式调用这个模块。我应该实现promise还是使用async,等待?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-19 08:44:15

根据sendgrid的docs的说法,promise已经实现了,这使得这一点变得更容易,因为您只需从模块返回该promise。例如,如果您只想使用该承诺,则可以:

代码语言:javascript
运行
复制
//mymodule.js

var helper = require('sendgrid').mail;
var fromEmail = new helper.Email('test@test.com');
var toEmail = new helper.Email('sample@sample.com');
var subject = 'Sending with SendGrid is Fun';
var content = new helper.Content('text/plain', 'and easy to do anywhere, even with Node.js');



module.exports = function(from, subject, to, content){
    var mail = new helper.Mail(fromEmail, subject, toEmail, content);

    var sg = require('sendgrid')("**********************");
    var request = sg.emptyRequest({
    method: 'POST',
    path: '/v3/mail/send',
    body: mail.toJSON()
    });

    return sg.API(request)
}

现在您可以简单地使用它,如下所示:

代码语言:javascript
运行
复制
mail = require('./mymodule')

mail("from@example.com", "subject", "to@example.com", content)
.then(function(response) {
    // use response.body etc
})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45758825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档