ES6中的Primise

GBT 27930-2015/2023国标充电协议A类CAN报文ID说明 国标充电CAN的ID,仅供学习参考。 阅读详情

1、Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。
2、Promise 是一个对象,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。
3、Promise 对象有以下两个特点:

对象的状态不受外界影响。有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。
一旦状态改变,就不会再变,任何时候都可以得到这个结果。Promise对象的状态改变,只有两种可能:从pending变为fulfilled和从pending变为rejected。

4、有了Promise 对象,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。
5、缺点:

无法取消Promise,一旦新建它就会立即执行,无法中途取消。(Promise 新建后就会立即执行)
如果不设置回调函数,Promise内部抛出的错误,不会反应到外部。
当处于pending状态时,无法得知目前进展到哪一个阶段

6、基本用法:

const promise = new Promise(function(resolve, reject) {
  // ... some code

  if (/* 异步操作成功 */){
    resolve(value);
  } else {
    reject(error);
  }
});

Promise 构造函数接受一个函数作为参数,该函数的两个参数分别是resolve和reject。它们是两个函数,由 JavaScript 引擎提供,不用自己部署。

resolve函数:将Promise对象的状态从“未完成”变为“成功”,在异步操作成功时调用,并将异步操作的结果,作为参数传递出去
reject函数:将Promise对象的状态从“未完成”变为“失败”,在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。

Promise 实例生成以后,可以用then方法分别指定resolved状态和rejected状态的回调函数。

promise.then(function(value) {
  // success
}, function(error) {
  // failure
});

第一个回调函数是Promise对象的状态变为resolved时调用
第二个回调函数是Promise对象的状态变为rejected时调用(可选)
这两个函数都接受Promise对象传出的值作为参数(调用resolve函数和reject函数时带有参数,那么它们的参数会被传递给回调函数。)

reject函数的参数通常是Error对象的实例,表示抛出的错误
resolve函数的参数除了正常的值以外,还可能是另一个 Promise 实例

7、当resolve函数的参数是另一个 Promise 实例时,当前 Promise 状态由 参数Promise决定


const p1 = new Promise(function (resolve, reject) {
  // ...
});
const p2 = new Promise(function (resolve, reject) {
  // ...
  resolve(p1);
})
// p1的状态决定了p2的状态

// 如果p1的状态是pending,那么p2的回调函数就会等待p1的状态改变;
// 如果p1的状态已经是resolved或者rejected,那么p2的回调函数将会立刻执行。

8、一般来说,调用resolve或reject以后,Promise 的使命就完成了,后继操作应该放到then方法里面,而不应该直接写在resolve或reject的后面。所以,最好在它们前面加上return语句,这样就不会有意外。

万字长文,YOLOv8 yaml 文件解析 | 一文搞定 YOLOv8 分类任务,检测任务,分割任务,关键点任务 YOLOv8 yaml 文件解析 | 一文搞定 YOLOv8 分类任务,检测任务,分割任务,关键点任务 阅读详情

相关推荐

联想开天N70z/N79Z G1d笔记本Win驱动下载

本文介绍了联想开天N70Z/N79Z G1d笔记本在Win11系统下的驱动安装方法。提供了WiFi网卡驱动(RealtekWlan)和显卡驱动(ZX C960 GPU)的详细安装步骤,包括手动更新驱动和卸载流程。驱动安装后成功支持5G WiFi连接并正确识别显卡型号。文中附有系统信息和安装效果截图,同时提供了官方驱动下载地址及备用下载链接。该指南适用于需要为联想开天N70Z/N79Z G1d笔记本安装Win11驱动的用户参考。

信创运维工程师 · 银河麒麟 & 容器实战 | 金融生产环境迁移·等保加固 | 142篇原创·17万+阅读 3483

总结Primise对象的用法

Primise对象 作用 基本用法 方法 Promise.prototype.then() Promise.prototype.catch() Promise.prototype.finally() Promise.all() Promise.race() Promise.resolve() Promise.reject() 拓展方法 done()

bjl008的博客 4017

网络安全与黑客攻防常见设备:前置机、跳板机、堡垒机与肉鸡

前置机、跳板机、堡垒机和肉鸡,这些看似冷僻的技术名词,实则是网络安全与黑客攻防战中的关键角色。它们有的守护着企业的数字Pltform,保卫网络安全;有的则成为黑客的跳板,游走于灰色地带。

网络技术联盟站 881

Promise基础知识(一)

关于promise的基础知识 在接触到promise时,我自己也是一脸懵,所以两天学完后,想做一个总结关于它。 一、异步编程的背景知识      --javascript引擎是单线程时间循环的概念构建的,同一时刻只能执行一个代码块,所以需要跟踪即将运行的代码,那些代码被放在一个任务队列里,每当一段代码准备执行时,都会被添加到任务队列,每当一段代码结束执行,时间循环会执...

qq_39897978的博客 1141

ES6中Promise用法及理解

ES6中Promise用法及理解 promise就是个构造函数,参数为一个函数 构造函数一般使用其实例进行操作,如何得到一个构造函数的实例呢? 1、new Promise(参数:函数); 2、参数为一个函数,这个函数同样也有两个参数 resolve reject,这两个参数也是函数 resolve执行后返回promise的成功状态, reject执行后返回promise的错误状态 基本使用形式: var p = new Promise(function(resolve,reject){

weixin_46995731的博客 1746

Promise【一篇搞懂】

MDN 上的定义:一个Promise对象代表一个在这个Promise被创建出来时不一定已知的值。它让您能够 把异步操作最终的成功返回值或者失败原因和相应的处理程序关联起来。这样使得异步方法可以像同步方法那样返回值:异步方法并不会立即返回最终的值,而是会返回一个 promise,以便在未来某个时候把值交给使用者。抽象表达:Promise 是 ES6 引入的异步编程的新解决方案。在 Promise 出现之前,只是单纯的使用回调函数。

weixin_50539249的博客 9119

Promise知识归纳

Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。

hole_diss的博客 956

es6语法特性,解构,箭头函数,尾调用优化,proxy,primise,async,装饰器

1.let,const let,const定义的变量,不是绑定在window下。 2.解构,ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。 //数组解构 let [a, b, c] = [1, 2, 3]; //对象解构 let { foo, bar } = { foo: 'aaa', bar: 'bbb' }; foo // "aaa" bar // "bbb" //字符串解构 const [a, b, c, d, e] = 'hello';

weixin_45574792的博客 526

ES6知识点整理之----Primise----含义与基本用法

1、Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。 2、Promise 是一个对象,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。 3、Promise对象有以下两个特点: 对象的状态不受外界影响。有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。只...

ap1005233的博客 410

ES6知识点整理之----Primise----API

Promise.prototype.then() 作用是为 Promise 实例添加状态改变时的回调函数。返回的是一个新的Promise实例(注意,不是原来那个Promise实例)。因此可以采用链式写法,即then方法后面再调用另一个then方法。 getJSON("/posts.json").then(function(json) { return json.post; ...

ap1005233的博客 213

ES6新增语法 ,promise

对象结构 方法简洁表示法 箭头函数没有自己的this,它指向外层代码块的this,不能作为构造函数 模版字符串 里面可以使用函数 … 扩展运算符

u011436748的博客 231

ES6 封装Promise

<script> // class Promise // class 类 类别的意义 // 为什么 // 构造函数 // function Person(name, age = 0) { // this.name = name; //有this 返回 // this.age = age; // }...

weixin_33810302的博客 216

ES6新增的Promise

回调地狱: 在使用JavaScript时,为了实现某些逻辑经常会写出层层嵌套的回调函数,如果嵌套过多,会极大影响代码可读性和逻辑,这种情况也被成为回调地狱。 代码阅读性非常差 浪费性能 不方便维护 // 三十个不同请求,同时拿到所有的数据 ajax("",function(res1){ ajax("",function(res2){ ajax("",function(res3){ ajax("",function(re.

Youthful_Dreams的博客 272

ES6中Promise用法详解_es6中promise的用法

如何捕获promise的错误呢?在promise的调用链的最后调用catch函数,一旦promise调用链中有reject执行,promise就会终止执行直接进入catch函数,否则catch不会执行。Promise.race的返回结果为一个Prmise实例,只不过这个实例只能是最先执行resolve的那个promise。有的时候有这样的需求,后面的ajax请求依赖前面的ajax请求必须按照顺序调动如何实现呢?注意:Promise.race的参数为一个数组,数组每一项都是promise实例对象。

2401_85124764的博客 333

ES6---new Promise()讲解,Promise对象是用来干嘛的?

ES6---new Promise()讲解,Promise对象是用来干嘛的? :https://blog.csdn.net/Wbiokr/article/details/79490390 转载于:https://www.cnblogs.com/bydzhangxiaowei/p/10057850.html

weixin_30752377的博客 199

es6中promise的一些api

Promise.all(): 将多个promise对象封装成一个,当所有的状态都是fulfilled时才会执行then Promise.race(): 将多个promise对象封装成一个,只要有一个的状态是fulfilled就执行then, 有一个是rejected就执行catch Promise.any(): 只要有一个是fulfilled,最后结果是fulfilled,所有都是rejecte...

weixin_44771007的博客 263

Promise,async,await,fetch详解

Promise: 在ES6以前如果我们需要在js中进行异步处理,大多数都是通过使用回调函数的方式来解决问题,如果简单的异步处理,回调函数的方式看起来还是比较优雅的,逼格还有点高,但是如果异步操作很多,回调嵌套就很深,代码看起来就会特别别扭,维护起来成本也会变高这个时候ES6带来Promise这个新特性,这个方法很好的解决了深层次异步嵌套的问题,我们在写代码的时候可以采用类似linux流式的书写方式...

hyupeng1006的博客 2709

Promise对象

什么是 Promise Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Promise对象。 Promise 作为一个对象,对象里存储一个状态,这个状态是可以随着内部的执行转化的,为以下三种状态之一:等待态(Pending)、完成态(Fulfilled)、拒绝...

weixin_30267697的博客 157

primise的all和race的用法

1、Promise 是异步编程的一种解决方案,其实是一个构造函数,有all、race、reject、resolve这几个方法,原型上有then、catch等方法。 2、promise.all 主要用于一次性执行多个异步方法,并且按传入顺序执行。该方法提供了并行执行异步操作的能力,并且在所有异步操作执行完后并且执行结果都是成功的时候才执行then方法。 //成功的时候返回的是一个结果数组,而失败的时...

weixin_39150852的博客 890

Promise

promise是es6提供的一种解决异步的方案 两个特点 Primise翻译过来就是承诺的意思 (1)对象的状态不受外界影响,Promise代表一个异步操作,,有三种状态:pending(盆顶):进行中、fulfilled(富父爱儿的):已成功、和rejected(瑞杰克踢得):已失败。 (2)z状态一旦改变,就不会再变,任何时候都可以得到这个结果。 一个缺点 (1)一旦新建他就会立即执行,无法中途取出,需要设置回调函数或用.catch来引出错误或是try catch来解决(1)一旦新建他就会立即执

Lwh2004的博客 411

JavaScript——Promise

JavaScript——Promise

Corn___的博客 1974

Promise的使用及用法详解

Promise的基本使用及用法详解

嘿,小明的博客 1万+

惠普hp454固件 hp479固件降级方法,解决硒鼓芯片不认报错.zip

惠普hp454固件 hp479固件降级方法,解决硒鼓芯片不认报错.zip

285个地级市空间权重矩阵(空间邻接、地理距离、经济距离、经济地理嵌套矩阵)

285个地级市空间权重矩阵(空间邻接、地理距离、经济距离、经济地理嵌套矩阵)数据包括:包括空间邻接矩阵、空间地理距离矩阵、空间经济距离矩阵、空间经济地理嵌套矩阵其中空间经济距离矩阵根据2003-2019年人均GDP得到

上一篇: ajax请求的四大步骤
下一篇: ES6新增的数组的方法
甜茶。。
博客等级 码龄7年 11粉丝 58原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值