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

如何在javascript中使模块异步
EN

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    // 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 00:44:15

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//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
代码运行次数:0
运行
AI代码解释
复制
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

复制
相关文章
如何在JavaScript中使用for循环
循环允许我们通过循环数组或对象中的项并做一些事情,比如说打印它们,修改它们,或执行其他类型的任务或动作。JavaScript有各种各样的循环,for循环允许我们对一个集合(如数组)进行迭代。
chuckQu
2022/11/28
5.1K0
如何在JavaScript中使用for循环
如何在纯 JavaScript 中使用 GraphQL
除了 REST 以外,很多 API 都开始支持 GraphQL,甚至完全支持它了。但是,如果你需要使用一个 GraphQL API,你很自然就会想到自己需要使用 React 和 / 或其他一些库才能让它跑起来。这是因为许多教程和示例代码似乎都基于这样一个假设,也就是说如果你在使用 GraphQL,就需要使用这些库。
深度学习与Python
2021/02/05
3.6K0
如何在JavaScript中使用高阶函数
原文链接:https://www.sitepoint.com/higher-order-functions-javascript/[1]
chuckQu
2022/09/20
1.5K0
【译】在生产环境中使用原生JavaScript模块
两年前,我写了一篇有关module/nomodule技术的文章(译者注:原文地址https://philipwalton.com/articles/deploying-es2015-code-in-production-today/,文末有此文的译文链接),这项技术允许你在编写ES2015+代码时,使用打包器和转换器生成两个版本的代码库,一个具有现代语法的版本(通过 <scripttype="module">加载)和一个使用ES5语法的版本(通过 <scriptnomodule>加载)。该技术允许你向支持模块(译者注:指ECMA制定的标准的export/import模块语法及其加载机制,又称为ES Module、ESM、ES6 Module、ES2015 Module,下文中将出现很多"模块"一词,都是这个含义)的浏览器发送更少的代码,现在大多数Web框架和CLI都支持它。
WecTeam
2019/12/16
1.3K0
【译】在生产环境中使用原生JavaScript模块
如何在JavaScript中使用数组方法:Mutator方法
JavaScript中的数组由元素列表组成。 JavaScript有许多有用的内置方法来处理数组。 修改原始数组的方法称为mutator方法,返回新值或表示形式的方法称为访问器方法。 在本教程中,我们将重点介绍mutator方法。
子润先生
2021/06/15
1.8K0
如何在JavaScript中使用数组方法:Mutator方法[通俗易懂]
JavaScript中的数组由元素列表组成。JavaScript有许多有用的内置方法来处理数组。修改原始数组的方法称为mutator方法,返回新值或表示的方法称为accessor方法。在本教程中,我们将重点介绍mutator方法。
全栈程序员站长
2022/10/01
2.2K0
如何在JavaScript中使用数组方法:Mutator方法[通俗易懂]
JavaScript异步
这是一个异步编程的代码,刚开始的时候我一直绕不出来,何为异步?我想到了ajax的异步,但是还是没明白,查了很多讲解,越看越不明白,最后找到了任务队列和主线程,才明白了什么叫异步。
wade
2020/04/23
4580
异步模块模式
异步模块模式AMD是当请求发出后,继续其他业务逻辑,直到模块加载完成执行后续逻辑,实现模块开发中的对模块加载完成后的引用,大名鼎鼎的require.js就是以它为思想的,异步模块模式不属于一般定义的23种设计模式的范畴,而通常将其看作广义上的架构型设计模式。
WindRunnerMax
2021/01/14
4500
如何在OpenCV DNN模块中使用NVIDIA GPU加速--(基于Windows)
来源丨https://learnopencv.com/how-to-use-opencv-dnn-module-with-nvidia-gpu-on-windows
Color Space
2022/02/08
6.8K0
如何在OpenCV DNN模块中使用NVIDIA GPU加速--(基于Windows)
JavaScript异步编程
#前言 从我们一开始学习JavaScript的时候就听到过一段话:JS是单线程的,天生异步,适合IO密集型,不适合CPU密集型。但是,多数JavaScript开发者从来没有认真思考过自己程序中的异步到底是怎么出现的,以及为什么会出现,也没有探索过处理异步的其他方法。到目前为止,还有很多人坚持认为回调函数就完全够用了。
leocoder
2018/10/31
1.1K0
JavaScript异步操作
1. Promise.all()和Promise.race() 并行调用异步操作 两个函数均用于并行调用多个异步操作使用 All:两个异步操作都resolve之后调用then() var p1 = new Promise(function (resolve, reject) { setTimeout(resolve, 500, 'P1'); }); var p2 = new Promise(function (resolve, reject) { setTimeout(resolve, 60
hotarugali
2022/03/01
4370
JavaScript异步编程
平时开发经常会用到js异步编程,由于前端展示页面都是基于网络机顶盒(IPTV的一般性能不太好,OTT较好),目前公司主要采取的异步编程的方式有setTimeout、setInterval、requestAnimationFrame、ajax,为什么会用到异步呢,就拿业务来说,若前端全部采取同步的方式,那加载图片、生成dom、网络数据请求都会大大增加页面渲染时长。
Jack Chen
2018/09/14
9070
JavaScript异步编程
JavaScript 异步编程
异步(Asynchronous, async)是与同步(Synchronous, sync)相对的概念。
陈不成i
2021/07/19
5700
JavaScript 异步模式
原文链接:https://note.noxussj.top/?source=cloudtencen 什么是异步模式? 不会等待当前任务执行完毕,才会去执行下一个任务,这就是异步模式(Asynchron
菜园前端
2023/05/13
3100
JavaScript 异步编程
众所周知,JavaScript 是单线程的,但异步在 js 中很常见,那么简单来介绍一下异步编程
Krry
2020/09/15
6130
javascript异步编程
简单来说,异步编程就是在执行一个指令之后不是马上得到结果,而是继续执行后面的指令,等到特定的事件触发后,才得到结果。
OECOM
2020/07/01
5580
JavaScript Async (异步)
实际上,所有重要的程序(特别是 JavaScript 程序)都需要通过这样或那样的方法来管理这段时间间隙,这时可能是在等待用户输入、从数据库或文件系统中请求数据、通过网络发送数据并等待响应,或者是在以固定时间间隔执行重复任务(比如动画)。
Cellinlab
2023/05/17
4330
JavaScript 异步编程
JavaScrip 采用单线程模式工作的原因,需要进行DOM操作,如果多个线程同时修改DOM浏览器无法知道以哪个线程为主。
用户3045442
2020/07/31
1.2K0
JavaScript 异步编程
JavaScript 异步编程
完整高频题库仓库地址:https://github.com/hzfe/awesome-interview
HZFEStudio
2021/10/30
9920
JavaScript异步编程
Javascript语言的执行环境是”单线程”(single thread)。所谓”单线程”,就是指一次只能完成一件任务。如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推。 Javascript语言将任务的执行模式分成两种:同步(Synchronous)和异步(Asynchronous)。 “异步模式”非常重要。在浏览器端,耗时很长的操作都应该异步执行,避免浏览器失去响应,最好的例子就是Ajax操作。在服务器端,”异步模式”甚至是唯一的模式,因为执行环境是单线程的,如果允许同步执行所有http请求,服务器性能会急剧下降,很快就会失去响应。 然而,异步执行最大的问题就是执行顺序。 假定有两个函数f1和f2,后者等待前者的执行结果。
奋飛
2019/08/15
4600

相似问题

如何在异步模块中使用请求

12

在javascript库项目中使用异步模块加载

10

如何在Node.js中使用原型(如模块)?

12

JavaScript:异步创建实例,在不同的模块中使用

121

如何在Node.js中使用原型(如模块)?

33
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文