nodejs中Promise使用
promise 英文意思是 诺言; 许诺; 承诺; 获得成功的迹象; 吉兆; 迹象; 用法如字面意思,是一种可能未发生的许诺 js中的代码存在异步执行,一般通过回调函数返回结果,如ajax调用后会在回调函数中获取返回值,但是js代码没有等待返回值而继续向下执行了。现实中程序代码是实现有先后顺序的业务逻辑的,为了让异步代码按照指定的顺序执行,这里使用Promise完成
|
以下在typescript语言环境下演示:
//建立一个Promise
let p:Promise<string> = new Promise<string>((resolve, reject)=>{console.log('Promise 被执行...');let err:boolean = false;if(!err){console.log('没有报错...');resolve('没有报错');}else{console.log('发生了错误...');reject('发生了错误')}
});
先看then方法
//在vscode编辑器中鼠标移动到方法上会有then方法提示:/*************************************************************/(method) Promise<string>.then<string, never>(onfulfilled?: ((value: string) => string | PromiseLike<string>) | null | undefined, onrejected?: ((reason: any) => PromiseLike<never>) | null | undefined): Promise<...>
Attaches callbacks for the resolution and/or rejection of the Promise.@param onfulfilled — The callback to execute when the Promise is resolved.@param onrejected — The callback to execute when the Promise is rejected.@returns — A Promise for the completion of which ever callback is executed./*************************************************************///首先看then方法的返回值: Promise<...>,也是一个Promise对象
//then的参数可以是两个:onfulfilled?,onrejected? 可以传递,也不可不传递//onfulfilled的类型:
// 1.(value: string) => string | PromiseLike<string>) 可以是带有一个参数的函数,返回值可以是string(与new Promise时候规定的范型一致)或者PromiseLike(理解为Promise即可)
// 2.null
// 3.undefined//onrejected的类型:
// 1.(reason: any) => PromiseLike<never> 可以是带有一个参数的函数,返回值可以是PromiseLike(理解为Promise即可)
// 2.null
// 3.undefined//onfulfilled 回调函数是在Promise中resolved方法执行时被调用的
//onrejected 回调函数是在Promise中onrejected方法执行时被调用的
//同一Promise对象执行resolve传递参数后,参数不会再次改变
//当先执行resolve后执行then函数时,传递的参数会保存在对象内部
//当先执行then函数后执行resolve函数时,then函数中的回调函数会阻塞等待resolve的执行
看例子:
//建立一个Promise
let p:Promise<string> = new Promise<string>((resolve, reject)=>{console.log('-----------Promise执行-------------');//实例化对象时候执行setTimeout(()=>{console.log('-----------Promise resolve执行-------------');//同一Promise对象执行resolve传递参数后,参数不会再次改变//当先执行resolve后执行then函数时,传递的参数会保存在对象内部//当先执行then函数后执行resolve函数时,then函数中的回调函数会阻塞等待resolve的执行resolve('resolve执行'); },1500);
});console.log('------------------------');setTimeout(()=>{p.then(value=>{console.log('------------我执行了1------------');console.log(`value=${value}`);console.log('------------我执行了1------------');});
},2000);console.log('------------分割线------------');setTimeout(()=>{p.then(value=>{console.log('------------我执行了2------------');console.log(`value=${value}`);console.log('------------我执行了2------------');});
},1000);
代码执行结果:
-----------Promise执行-------------
index.ts:3
------------------------
index.ts:11
------------分割线------------
index.ts:21
-----------Promise resolve执行-------------
index.ts:5
------------我执行了2------------
index.ts:25
value=resolve执行
index.ts:26
------------我执行了2------------
index.ts:27
------------我执行了1------------
index.ts:15
value=resolve执行
index.ts:16
------------我执行了1------------
nodejs中Promise使用相关推荐
- nodejs中使用worker_threads来创建新的线程
文章目录 简介 worker_threads isMainThread MessageChannel parentPort和MessagePort markAsUntransferable SHARE ...
- nodejs中的文件系统
文章目录 简介 nodejs中的文件系统模块 Promise版本的fs 文件描述符 fs.stat文件状态信息 fs的文件读写 fs的文件夹操作 path操作 简介 nodejs使用了异步IO来提升服 ...
- 深入理解nodejs中的异步编程
文章目录 简介 同步异步和阻塞非阻塞 javascript中的回调 回调函数的错误处理 回调地狱 ES6中的Promise 什么是Promise Promise的特点 Promise的优点 Promi ...
- ES Module 和 CommonJS 学习笔记(二) —— NodeJS 中使用 ESM 和 CJS
在 NodeJS 中使用 ES6 模块 当前较新版本的 NodeJS 支持 ESM 和 CJS ,但默认使用的是 CJS 规范去解析 JS 代码,直接使用 CJS 是没有任何问题的,而使用 ESM 需 ...
- linux c++ 等待函数,JavaScript在nodejs中实现sleep休眠函数wait等待的方法
参考文档: JavaScript在nodejs中实现sleep休眠函数wait等待的方法: https://www.bas369.com/more/l... js的休眠实现---sleep(): ht ...
- GridFS在nodejs中的应用
问题的产生: 众所周知,在mongodb中单个文档的大小默认限制为16M,如果要存储的数据超过这个限制那么程序就会抛出异常,当然你可以通过修改数据库的限制将16M提高到32M甚至更大,但是这会有两个问 ...
- nodejs+html转换pdf,Nodejs中使用phantom将html转为pdf或图片格式的方法
最近在项目中遇到需要把html页面转换为pdf的需求,并且转换成的pdf文件要保留原有html的样式和图片.也就是说,html页面的图片.表格.样式等都需要完整的保存下来. 最初找到三种方法来实现这个 ...
- nodeJS中读写文件方法的区别
导言:nodejs中所有与文件相关的操作都在fs模块中,而读写操作又是我们会经常用到的操作,nodejs的fs模块针对读操作为我们提供了readFile,read, createReadStream三 ...
- nodejs+html转换pdf,Nodejs中使用phantom将html转为pdf或图片格式的方法.pdf
Nodejs中中使使用用phantom将将html转转为为pdf或或图图片片格格式式的的方方法法 最近在项目中遇到需要把html页面转换为pdf 的需求,并且转换 的pdf文件要保留原有html的样式 ...
最新文章
- leetcode-142 环形链表II
- IOS开发笔记9-C语言基础复习
- 论信息系统的项目范围管理
- 医学院计算机社发展,医学院计算机教学创新思路.docx
- i.MX 系列CPU HAB漏洞SecureBoot漏洞
- 从JDBC到数据库连接池
- Vicor再携创新产品“登陆”ODCC大会,有详情!
- gtp文件服务器,GTP中文网吉它谱吉他谱guitar网站
- bash中的算术运算
- QGroundControl源码编译安装
- svn sync主从同步学习
- C语言 打印九九口诀表
- C++11:lambda表达式详细介绍
- 2021年天猫淘宝双12,京东双十二活动时间以及玩法介绍
- 如何用计算机求矩阵的逆矩阵,逆矩阵的求法
- 计算机图片怎么截图快捷键,电脑截图快捷键四种截屏方式,笔记本电脑如何截屏截图?...
- 段式液晶程序设计技巧
- 【valist】c语言可变参数宏
- cs231n:assignment2——Q4: ConvNet on CIFAR-10
- delphi源码 中间件 框架【网盘映射】
热门文章
- Selenium爬虫实践:ajax请求抓包、浏览器退出
- CentOS8安装Geant4笔记(一):Geant4介绍、编译和安装
- top: failed tty get
- m=1,n=2;不符合C语言的赋值语句,矿大 C语言程序设计期末考试试题(含答案)
- 4. 去掉a标签的下划线
- nginx php 404 not found,解决项目中出现的404 Not Found nginx/1.15.0
- C语言实现结构体输入学号姓名成绩并按照成绩高低排序输出
- 固定资产变动,查询找不到相应卡片
- Cocos Creator 3.2 本地调试正常 放入域名下运行或者在4399上跑 加载cconb文件报错
- 微软海底服务器外壳材料,你知道么?微软把数据中心扔海底了!