Promise的理解和使用

对Promise的理解以及Promise的基本用法 一、理解Promise ① 定义 ② 优点 ③ 特点 ④ 缺点 二、Promise基本用法 ① resolve函数的作用 ② reject函数的作用 ③ then方法 ④一个异步加载图片的例子 三、Promise的其他常见方法 ①Promise.prototype.then() ②Promise.prototype.catch() ③Promise.prototype.finally() ④Promise.all() ⑤Promise.race() 四、 阅读详情

Promise的理解和使用

前言: 该文章是在学习慕课网上的 promise入门一课的笔记,大家如果有兴趣的话可以直接去看视频,这位老师讲得还不错。

概念:

  1. 官方
    1-1. promise对象用于异步计算;
    1-2. promise表示一个现在,将来或用不可能可用的值
  2. 理解
    2-1. 主要用于异步计算;
    2-2. 可以将异步操作队列化,按照期望的顺序执行,返回符合预期的结果;
    2-3. 可以在对象之间传递和操作promise,帮助我们处理队列;

相关知识

1.同步:不同的事情严格按照顺序进行,如:步骤A,B要完全正确执行完A后才进行步骤B的处理;
2.异步:不同是事情可同时进行,如:步骤A,B可以同时进行执行;
例子:现在你需要完成两件事清,洗澡和去便利店买东西,但只有你一个人处理这些事的时候,你只能先做完一件事再去做另一件事,你不可能说一边洗澡一边去便利店买东西,这就是同步;但如果这个时候你女(男)朋友在,那你可以去洗澡,然后同时叫你的女(男)朋友在你洗澡的同时去便利店买东西,这样两件事是可以同时进行的,就是异步

用法

例子1(基础用法):

new promise(function(resolve,reject){
    //执行成功后执行回调函数
    resolve()
    //执行失败后执行的回调函数
    reject()

})
.then( val =>{ //promise成功执行完后执行该回调

    console.log(val)
})

例子2(promise最常用到的方法)

    new promise(function(resolve,reject){
        //doSomething;
        //执行成功后执行回调函数
        resolve(val);
        //执行失败后执行的回调函数
        reject(err);        
    })
    .then( val => {  //成功执行promise后执行一下代码,val为resolve中带出的参数
        console.log(val)
        return new promise(function(resolve,reject){
            //doSomething;
            //执行成功后执行回调函数
            resolve(val);
            //执行失败后执行的回调函数
            reject(err);    
        })
    })
    .then( val => { //但上面then中返回的promise执行完成后执行以下代码

        console.log(val) //val为第二个promise执行成功后resolve带出的参数
    })

例子3 (promise执行失败后的处理)

    new promise(function(resolve,reject){
        //doSomething;
        //执行失败后执行的回调函数
        reject(err);        
    })
    .then( val => {  //不会被执行
        console.log(val)
    }, err => { //promise执行出现错误时执行下面代码
        console.log(err) //err为reject带出的错误信息
    })

    //第二种写法(推荐) --- 该方法得到的错误信息要比上一个会全面一些
        new promise(function(resolve,reject){
        //doSomething;  
        //执行失败后抛出错误信息
        throw new Error('this is err')

    })
    .then( val => {  //不会被执行
        console.log(val)
    })
    .catch( error => { //promise执行完成后因其内部抛出了错误,会执行下面代码
        console.log(error.message)  //this is err
    })

例子4 (综合)

    new promise(function(resolve,reject){
        //doSomething;
        let val = 'success'
        //执行成功后执行的回调函数
        resolve(val);       
    })
    .then( val => {  //promise成功执行后执行
        console.log(val)   // ’success'

    }, err => { //没出现错误则不会被执行
        console.log(err) 
    })
    .then( val => { //执行完上一个then立即执行下面代码
        console.log(val)  // undefind
        return new promise( (resolve, reject) => {
            let err = 'this is err';

            throw new Error(err);

        })

    }) 
    .then( val => {  //不会被执行
            console.log(val) 
        })
    .catch( error => {
        console.log(error.message)  // 'this is err'
    })

手写Promise 理解promise底层原理 本文参考了此博客,在网上浏览了很多关于Promise的相关资料,promise可以说是JavaScript的重难点了,其中,很是感谢阮一峰老师的博客讲解以及MDN上的文档教程 如对Promise不太熟悉的同学,可以先浏览Promise工作原理分析,如有不同意见,欢迎讨论,一起进步。 Promise基本流程 function doSomething(){ var p1 = new Promise(function (resolve, reject) { setTimeout(()=. 阅读详情

相关推荐

Promise理解使用

Promise理解使用 promise 是什么 简单理解:promise是用于解决异步编程的一种新的解决方案,prominse对象用于表示一个异步操作最终完成的结果值; 具体体现: 语法 : promise是一个构造函数 ,可以用于实例化一个对象 功能: 通过调用Promise构造函数可以实例化一个封装有异步操作的对象,并且此对象可以获取异步操作的成功/失败的结果值; promise执行流程: 何时使用Promise 前端程序需要执行异步操作,并依赖其结果进行下一步操作时需要使用Promise。 pro

qq_43437539的博客 846

js中Promise理解与用法

异步编程,ajax

h220801__zzl的博客 1781

Unity Promise语法糖

Unity中 使用类似JavaScript(es6)中的promise语法,以实现优雅的异步链式调用,Unity2019可用,用法: using RSG; 后面就和js差不多了 new Promise((resolve, reject) =>{ resolve(); }).Then(()=>{});

对Promise的理解

一、Promise是什么? Promise是最早由社区提出和实现的一种解决异步编程的方案,比其他传统的解决方案(回调函数和事件)更合理和更强大。 ES6 将其写进了语言标准,统一了用法,原生提供了Promise对象。 ES6 规定,Promise对象是一个构造函数,用来生成Promise实例。 二、Promise是为解决什么问题而产生的? promise是为解决异步处理回调金字塔问题而产生的 三、Promise的两个特点 1、Promise对象的状态不受外界影响 1)pending 初始状态

liyongchunscr的博客 2173

ARM架构UOS实战:从源码编译Qt 5.15.2到定制Qt Creator的全流程解析

本文详细解析了在ARM架构统信UOS系统上,从源码编译Qt 5.15.2到定制Qt Creator开发环境的完整流程。内容涵盖环境准备、依赖部署、源码配置、编译优化、错误处理及IDE集成,旨在帮助开发者在国产化平台上构建自主可控的高性能Qt开发环境,解决特定ARM平台的兼容性与性能优化问题。

mango的博客 411

【转载】参数估计(Parameter Estimation):频率学派(最大似然估计MLE、最大后验估计MAP)与贝叶斯学派(贝叶斯估计BPE)

基础 频率学派与贝叶斯学派 http://www.douban.com/group/topic/16719644/ http://www.zhihu.com/question/20587681 最大似然估计(Maximum likelihood estimation,MLE) http://baike.baidu.com/view/1918804.htm http://baike.baidu.co

影 的专栏 3413

JS中对Promise的理解与使用

Promise 1.Promise是什么 2.干什么用的(或者是解决什么问题的) 3.怎么使用

threeking0的博客 3662

AD9371实战:如何用ZCU106搭建JESD204B TX时钟链(含关键参数计算)

本文详细解析了如何基于Xilinx ZCU106开发板为AD9371搭建JESD204B TX时钟链。文章从系统需求出发,逐步推导出从IQ采样率到GTH线速率的关键参数计算公式,并提供了在Vivado中配置GTH收发器(包括QPLL选择、分频比设置)的实战步骤与调试技巧,旨在帮助硬件工程师快速实现稳定可靠的JESD204B高速数据传输链路。

weixin_29164843的博客 293

12.关于JS中的promise理解以及使用

什么是promise。

qq_43544841的博客 2203

运维面试常见问题

对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。优缺点:优点:利用索引可以加速对数据的检索,索引是可以唯一的,创建索引允许指定单个列或者多个列缺点:减慢了数据录入速度,同时也增加了数据库的尺寸大小。

asdmjy123的博客 1374

2026滑块验证码终极实战:缺口检测算法+人机轨迹模拟,识别率从60%飙升至95%全方案

**摘要:2026年AIGC技术发展导致传统验证码失效,滑块验证码成为主流防护手段。本文深入分析了传统方案识别率低的原因,并提出多级检测融合和行为拟合优化方案。通过图像预处理优化、三级缺口检测引擎(差分图像法、Hu矩轮廓匹配、YOLOv8n模型兜底)将识别率提升至99.2%。同时针对轨迹模拟环节,设计了包含抖动特征、时间随机性和个体差异的行为模型,使通过率从12%提升至87%。该方案解决了传统方法在缺口定位精度和轨迹真实性方面的核心痛点,为应对新一代验证码风控提供了完整的技术框架。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1902

JS Promise理解

Promise 是异步编程的一种解决方案,其实是一个构造函数,自己身上有all、reject、resolve这几个方法,实例对象上有then、catch等方法。所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作,如ajax请求)的结果。

bocai_xiaodaidai的博客 5274

9、自动定理证明的发展历程与关键技术

本文全面介绍了自动定理证明的发展历程、关键技术及其实际应用,包括消解原理、参数化、支撑集策略等核心方法,并探讨了算法优化、数据结构优化及并行计算等提升效率的手段。同时,文章展望了未来发展方向,如深度学习在定理证明中的应用、交互式定理证明以及高阶逻辑的研究前景。

ll5678的博客 507

【Promise】promise的理解和使用

文章目录1 什么是Promise1.1 理解1.2 Promise的状态改变1.3 Promise的基本流程1.4 Promise的基本使用2 使用Promise的意义2.1 指定回调函数的方式更加灵活2.2 支持链式调用,可以解决回调地狱问题3 如何使用Promise3.1 API3.2 promise 的几个关键问题3.2.1 如何改变 promise 的状态?3.2.2 一个 promise 指定多个成功 / 失败回调函数,都会调用吗?3.2.3 改变 promise 状态和指定回调函数谁先谁后?3.

weixin_45980065的博客 2122

【数字孪生与仿真技术】07:焊装生产线虚拟调试与PLC代码生成全流程实战:从数字孪生到智能优化

摘要:本文系统阐述焊装生产线虚拟调试与PLC代码自动化生成的完整技术体系,结合工业4.0背景下的智能制造需求,构建从离散事件仿真、机器人运动规划到PLC控制逻辑生成的全流程解决方案。通过MATLAB/Simulink平台实现焊装线物流仿真优化,采用遗传算法进行缓冲区容量配置,结合Stateflow状态机设计PLC控制逻辑,并利用PLC Coder生成西门子S7-1500兼容的ST代码。某车企焊装线应用案例显示,虚拟调试技术使调试周期缩短75%,OEE提升13.4%,年节约成本超$420万。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1832

PCL 计算点云法向量并显示【2026最新版】

PCL计算法向量并显示,用OMP进行计算加速以及法线定向的深层次理解、操作。博客长期更新,本文最近更新时间为:2026年1月28日。

点云侠的博客 32万+

关于promise的理解

看了一些技术博客但是感觉太过于抽象难懂,所以自己搞一个。 回调地狱 https://www.cnblogs.com/suihang/p/9595548.html 如连接文章所示的回调地狱例子 //假设有五个计时器,在第一个计时器执行完后执行第二个,第二个执行完毕后执行第三个,以此类推 huidiaodiyu(){ setTimeout(function(){ ...

qq_35119405的博客 291

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

promise的状态值_理解JavaScript中Promise的使用

Javascript 采用回调函数(callback)来处理异步编程。从同步编程到异步回调编程有一个适应的过程,但是如果出现多层回调嵌套,也就是我们常说的厄运的回调金字塔(Pyramid of Doom),绝对是一种糟糕的编程体验。于是便有了 CommonJS 的 Promises/A 规范,用于解决回调金字塔问题。本文先介绍 Promises 相关规范,然后再通过解读一个迷你的 Promises...

weixin_39637386的博客 986

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

[ArkTs]对Promise的理解

Promise 的引入极大地简化了异步编程模型,并且使得异步代码的编写更加优雅和易于理解。在现代 Web 开发中,Promise 已经成为处理异步操作的标准方式之一。

m0_75219675的博客 2707

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

谈谈对于Promise简单的理解

在这里简单的说一下我对promise浅显的理解: promise是ES6提出的 称之为 “回调地狱的超级英雄” 什么是回调地狱呢? 这就是一个很典型的回调地狱 这样的代码 逻辑性比较强 而且易读性不高 牵一发而动全身 如果有一次执行错误下面的回调就不会再继续执行..... 举例子说明一下: 在平常工作时调接口数据 (当然这只是我举的一些例子 仅此而已 各位后端大佬们才不会写这么折磨人的接口的........) 我们在调接口拿数据时下一个接口的调用需要依赖上一次接口返回的信息 就好比...

weixin_60146725的博客 1925

对于Promise的理解

一. 理解 抽象理解 promise是JS中进行异步编程的新的解决方案(旧的是纯回调函数) 具体表达 从语法上来说:Promise是一个构造函数 从功能上来说:Promise对象用来封装有个异步操作并可以获取其结果 二.Promise状态的改变 Promise对象只有三种状态。 异步操作“未完成”(pending) 异步操作“已完成”(resolved,又称fulfilled) 异步操作“失败”(rejected) 这三种的状态的变化途径只有两种。 异步操作从“未完成”到“已完成” 异步操

qq_45679015的博客 371

什么是Promise,对Promise的理解

需要注意,Promise.all获得的成功结果的数组里面的数据顺序和Promise.all接收到的数组顺序是一致的,这样当遇到发送多个请求并根据请求顺序获取和使用数据的场景,就可以使用Promise.all来解决。Promise.all中传入的是数组,返回的也是是数组,并且会将进行映射,传入的promise对象返回的值是按照顺序在数组中排列的,但是注意的是他们执行的顺序并不是按照顺序的,除非可迭代对象为空。Promise.reject 也是new Promise的快捷形式,也创建一个promise对象。

2201_75773271的博客 1820

Promise理解及实现Promise

Promise 翻译过来就是承诺的意思,这个承诺会在未来有一个确切的答复,并且该承诺有三种状态,分别是: 等待中(pending) 完成了 (resolved) 拒绝了(rejected) 这个承诺一旦从等待状态变成为其他状态就永远不能更改状态了,也就是说一旦状态变为 resolved 后,就不能再次改变 new Promise((resolve, reject) => { reso...

wstomc的博客 667

javascript Promise 使用和理解

javascript Promise 使用和理解 promise 是异步 可以进行无限的调用 多重异步操作相互依赖的情况下,对于逻辑流程的控制 是我的理解我不知道对不对 具体看原地址 const promiseClick =()=>{ return new Promise(function(resolve, reject){ setTimeout(function(){ ...

freedom_fd的博客 196

谈谈你对promise的理解?

Promise是ES6异步编程的一种解决方案(目前最先进的解决方案是async和await的搭配(ES8),但是它们是基于promise的),从语法上讲,Promise是一个对象或者说是构造函数,用来封装异步操作并可以获取其成功或失败的结果。1.promise其实就是一个对象或者说是构造函数2.promise的出现(es6) 就是解决异步编程和回调地狱等问题,async和await的出现(ES8)就是基于promise的一种解决异步编程的终极解决方案(简化代码等等)

zhaojiaxing123的博客 761
上一篇: Git主要4个步骤理解(转载)
下一篇: git分支合并时忽略特定文件
sharpdeng
博客等级 码龄10年 4粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值