千家信息网

ES6的Promise如何使用

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,本篇内容介绍了"ES6的Promise如何使用"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!所谓Pr
千家信息网最后更新 2025年01月19日ES6的Promise如何使用

本篇内容介绍了"ES6的Promise如何使用"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。ES6 规定,Promise对象是一个构造函数,用来生成Promise实例。

概述

是异步编程的一种解决方案。

从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。

Promise 状态

状态的特点

Promise 异步操作有三种状态:pending(进行中)、fulfilled(已成功)和 rejected(已失败)。除了异步操作的结果,任何其他操作都无法改变这个状态。

Promise 对象只有:从 pending 变为 fulfilled 和从 pending 变为 rejected 的状态改变。只要处于 fulfilled 和 rejected ,状态就不会再变了即 resolved(已定型)。

const p1 = new Promise(function(resolve,reject){   resolve('success1');   resolve('success2');});const p2 = new Promise(function(resolve,reject){     resolve('success3');   reject('reject');});p1.then(function(value){     console.log(value); // success1});p2.then(function(value){   console.log(value); // success3});
状态的缺点

无法取消 Promise ,一旦新建它就会立即执行,无法中途取消。

如果不设置回调函数,Promise 内部抛出的错误,不会反应到外部。

当处于 pending 状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)。

then 方法

then 方法接收两个函数作为参数,第一个参数是 Promise 执行成功时的回调,第二个参数是 Promise 执行失败时的回调,两个函数只会有一个被调用。

then 方法的特点

在 JavaScript 事件队列的当前运行完成之前,回调函数永远不会被调用。

const p = new Promise(function(resolve,reject){ resolve('success');});p.then(function(value){ console.log(value);});console.log('first');// first// success

通过 .then 形式添加的回调函数,不论什么时候,都会被调用。

通过多次调用

.then

,可以添加多个回调函数,它们会按照插入顺序并且独立运行。

const p = new Promise(function(resolve,reject){ resolve(1);}).then(function(value){ // 第一个then // 1 console.log(value); return value * 2;}).then(function(value){ // 第二个then // 2 console.log(value);}).then(function(value){ // 第三个then // undefined console.log(value); return Promise.resolve('resolve');}).then(function(value){ // 第四个then // resolve console.log(value); return Promise.reject('reject');}).then(function(value){ // 第五个then //reject:reject console.log('resolve:' + value);}, function(err) { console.log('reject:' + err);});

then 方法将返回一个 resolved 或 rejected 状态的 Promise 对象用于链式调用,且 Promise 对象的值就是这个返回值。

then 方法注意点

简便的 Promise 链式编程最好保持扁平化,不要嵌套 Promise。

注意总是返回或终止 Promise 链。

const p1 = new Promise(function(resolve,reject){ resolve(1);}).then(function(result) { p2(result).then(newResult => p3(newResult));}).then(() => p4());

创建新 Promise 但忘记返回它时,对应链条被打破,导致 p4 会与 p2 和 p3 同时进行。

大多数浏览器中不能终止的 Promise 链里的 rejection,建议后面都跟上 .catch(error => console.log(error));

"ES6的Promise如何使用"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

状态 函数 对象 方法 参数 成功 两个 事件 内容 就是 更多 特点 知识 结果 链式 编程 运行 简便 学有所成 接下来 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 华为nat服务器配置实例 网络安全应届生月薪 科韵路工行软件开发中心 公安开展网络安全知识科普简报 软件开发 会议管理制度 幂等和数据库的唯一索引 数据库工程师需要学的技术 服务器的安全控制原理 浪潮服务器 硬盘灯 成都华为软件开发待遇怎么样 网络安全 人脸识别 黄石网络安全支队 航空购票系统数据库 达梦数据库查看外键 为什么老收到网络安全的短信 海南数据库安全审计 南京小程序软件开发服务 数据库多次连接失败会锁死吗 爱吾游戏宝盒服务器 渝中区综合软件开发服务公司 软件开发获奖发言 软件开发 会议管理制度 如何降低手机软件开发费用 数据库技术什么专业有用 如何建立学术数据库 调度自动化网络安全防护新闻 苏州进口服务器代理厂家 客户管理系统云服务器 应急系统软件开发的硬件装置 包河区企业网络技术咨询优点
0