| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> 前端开发最浪漫的技巧------promise(承诺) -> 正文阅读 |
|
[JavaScript知识库]前端开发最浪漫的技巧------promise(承诺) |
在漫漫历史长河中,许多文人墨客对于承诺这个概念有着很多的见解,也留下了很多脍炙人口的篇章,如"君子一言驷马难追",《诗经·邶风·击鼓》中有着一段"死生契阔,与子成说。执子之手,与子偕老。"直至今日依然为世人传颂. ES6时代,javascript提出了一个新的构造器"promise(承诺)",这掷地有声的名称背后也是前端开发中非常重要的一个语法. 一.什么是promisepromise是ES6提出的一种新语法,一个新的构造器,用于优化实现异步操作。 二.如何使用1.语法格式
2.三种状态和值2.1初始态pending(待定的,将要发生的),在刚刚创建promise对象时,没有调用resolve或者reject方法,此时的状态(PromiseState)就是pending. 2.2成功态fulfilled(实现),创建promise对象后,调用了第一个形参'resolve',此时状态就是fulfilled 2.3失败态rejected(拒绝),在创建promise对象后,调用了第二个形参'reject',此时状态就是rejected 2.4注意点pending状态可转化,一旦由初始态转化为其他任意一态,转换过程便不可逆了,也就是说转化之后再也不能转化为pending,也不能转化为另一态. 2.5值调用形参(resolve或reject)时可以传值 2.6兑现当状态发生变化时,就会调用then()或catch()中,同时将值传入对应的方法的回调函数中. 三.优化异步代码1.优化ajax
2.优化node.js文件的读取
四.then()方法1.作用then方法的作用是为Promise对象添加状态改变时的回调函数。 2.then的格式
第一个参数是fulfilled状态的回调函数,当对象状态是fulfilled时,then()执行第一个函数 第二个参数是rejected状态的回调函数,当对象状态是rejected时,then()执行第二个函数(可选) 如果对象状态为rejected,此时then()方法没有设置第二个参数,那么就会直接抛出一个错误 3.then的返回值then()方法的返回值是一个全新的promise对象,所以支持链式写法 那么返回出来的新的promise对象的状态是什么?接收的值又在哪里? p1=new promise(()=>{}) p2 = p1.then(fn1,fn2) 规则: 1.如果p1的状态时pending,那么p2的状态也是pending 2.如果此时p1状态改变为fulfilled,那么then()执行fn1
3.如果此时p1状态改变为rejected,那么then()执行fn2
五.catch()方法?1.作用Promise.prototype.catch 是 Promise.prototype.then(null, reject)的别名,当promise对象的状态为rejected时,调用
?一般不单独使用catch(),一般与then()一起使用 2.返回值catch的返回值仍是一个promise对象,确定它的值的方式与then()方法的方式一致。 六.promise的链式调用
七.async语法1.什么是async语法promise升级版,进一步改进异步代码的写法 2.async添加一个promise对象,可以使用then方法添加回调函数
3.await命令await命令后如果是一个promise对象,返回该对象的值. await命令后如果不是一个promise对象,那么就直接返回该值.
4.执行流程
5.async的返回值async 函数返回的 Promise 对象,必须等到内部所有await 命令后面的 Promise 对象执行完,才会发生状态改变,除非遇到 return 语句或者抛出错误。也就是说,只有 async 函数内部的异步操作执行完,才会执行 then 方法指定的回调函数。
未完待续... |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/28 13:03:46- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |