ES6: Promise对象的基础

从ES6到ES10:JavaScript版本演进的核心特性全解析 本文系统解析了从ES6到ES10的JavaScript核心特性演进,重点介绍了箭头函数、解构赋值、Promise、async/await等革命性更新。这些特性显著提升了代码可读性、开发效率和异步编程体验,是现代前端开发的基石。掌握ES6至ES10的核心语法,能帮助开发者编写更健壮、易维护的代码。 阅读详情

Promise返回的只有二种状态要么已解决rejected,要么已拒绝rejected

内置属性

[[PromiseStatus]]

  1. Promise 的当前状态
  2. 有三种状态[“pending”, “resolved”, “rejected”]
  3. 初始状态是"pending"
  4. 状态由调用的resolve,reject 回调函数, throw语句抛出,程序异常来决定状态的变化, 只会变化成[‘resolved’, ‘rejected’]
  5. 最后的状态如果没有异常或者异常被处理就必定是“resolved”
  6. 如果异常没有被处理捕获,状态就是"rejectd" 并抛出异常
  7. Promise无法捕获异步的异常

[[PromiseValue]]:

  1. promise的当前的状态值
  2. 初始值undefined
  3. 状态值由resolve, reject回调函数, throw语句, 程序异常决定
  4. 只要状态值被then或者catch处理过后就重新为undefined
  5. then,catch的回调函数有返回值或有异常的话就是新的状态值
构造函数方法
  1. Promise.all()
  2. Promise​.race()
  3. Promise​.resolve()
  4. Promise​.reject()
构造函数原型方法
  1. Promise.prototype.then
  2. Promise.prototype.catch
  3. Promise.prototype.finally
一、初始状态(pending)
const promise1 = new Promise((resolve, reject) => {})
// [[PromiseStatus]]: "pending"
// [[PromiseValue]]: "undefined"
console.log(promise1) 

const promise2 = new Promise((resolve, reject) => 'resolvedValue')
// [[PromiseStatus]]: "pending"
// [[PromiseValue]]: "undefined"
// Promise构造函数不接收执行函数的返回值,总是返回一个新的Promise对象
console.log(promise2) 
二、两种状态(resolved, rejected)
// 1. resolved状态
const promise1 = new Promise((resolve, reject) => {
	resolve('success1')
	resolve('success2') // 多次执行状态值改变无效
	reject('success2') // 执行状态改变无效
})
// [[PromiseStatus]]: "resolved"
// [[PromiseValue]]: "success1"
console.log(promise1)

// 2.1. rejected状态
const promise2 = new Promise((resolve, reject) => {
	reject('failed1')
	reject('failed2') // 多次执行状态值改变无效
	resolve('success2') // 执行状态改变无效
})
// [[PromiseStatus]]: "rejected"
// [[PromiseValue]]: "failed"
// 同时控制台报出错误, 并没有处理异常
console.log(promise2)

// 2.2. rejected状态
const promise3 = new Promise((resolve, reject) => {
	throw 'error' // 主动抛出异常
})
// [[PromiseStatus]]: "rejected"
// [[PromiseValue]]: "error"
// 同时控制台报出错误, 并没有处理异常
console.log(promise3)

// 2.3. rejected状态
const promise4 = new Promise((resolve, reject) => {
	rejected // 程序异常, rejected变量并未声明
})
// [[PromiseStatus]]: "rejected"
// [[PromiseValue]]: "ReferenceError: rejected is not defined"
// 同时控制台报出错误, 并没有处理异常
console.log(promise4)
三、实例方法(then, catch, finally)
then(onFulfilled, onRejected)

返回promise对象, 可链式调用, 处理resolved或rejected的状态回调
then回调方法可返回值或返回新的promise对象
如果是返回的新的promise对象,就丢弃当前状态与promise对象

如果rejected被处理过后, then方法不论链式调用多少次都会执行除非当前状态是rejected,

// 状态"resolveed"
const promise = new Promise((resolve, reject) => resolve('success'))
// then promise (resolved, rejected)的状态值接收方法
promise
  // [[PromiseStatus]]: "resolved"
  // [[PromiseValue]]: "success"
  .then(value => {
	// 打印"success"
	console.log(value)
  })
  // [[PromiseStatus]]: "resolved"
  // [[PromiseValue]]: undefined
  .then(value => {
    // 打印undefined
    console.log(value)
    return 'success2' // 返回值给下一个then接收使用
  })
  // [[PromiseStatus]]: "resolved"
  // [[PromiseValue]]: "success2"
  .then(value => {
    // 打印success2
    console.log(value)
  })
then(onFulfilled, onRejected)

rejected状态如果被处理过, promise的状态会重新为resolved值为返回值

// 状态"rejected"
const promise = new Promise((resolve, reject) => reject('failed'))
// then promise (resolved, rejected)的状态值接收方法
// 返回promise对象, 可链式调用
promise
  // [[PromiseStatus]]: "rejected"
  // [[PromiseValue]]: "failed"
  .then(value => {
  	// fulfillment
    }, error => {
  	// 打印"failed"
    console.log(error)
    return 'new value'
  })
  // [[PromiseStatus]]: "resolved"
  // [[PromiseValue]]: "new value"
  .then(value => {
  	// 打印 ""new value"
	console.log(value)
  })
catch(onRejected)

返回promise对象, 可链式调用, 处理失败的状态回调
也可返回值或promise对象, 并初始化promise状态为resolved
如果是返回的新的promise对象,就丢弃当前状态与promise对象

// 状态"rejected"
const promise = new Promise((resolve, reject) => reject('failed'))
// then promise (resolved, rejected)的状态值接收方法
// 返回promise对象, 可链式调用
promise
  // [[PromiseStatus]]: "rejected"
  // [[PromiseValue]]: "failed"
  .then(value => {
    // resolved时的回调, 因为当前promise的状态是rejetced状态所以此回调并不会执行
    console.log(value)
  })
  // [[PromiseStatus]]: "rejected"
  // [[PromiseValue]]: "failed"
  .catch(error => {
  	// 打印"failed"
    console.log(value)
  })
  // [[PromiseStatus]]: "resolved"
  // [[PromiseValue]]: undefined
  then(value => {
    // 打印undefined
  	console.log(value)
  })
finally(onFinally)

返回promise对象, 可链式调用
onFinally回调函数无论当前状态是resolved或者是rejected都会执行
与try语句的finally一样

const promise = new Promise((resolve, reject) => reject('failed'))
// 返回promise对象, 可链式调用
promise
  // [[PromiseStatus]]: "rejected"
  // [[PromiseValue]]: "failed"
  .catch(error => {
  	// 打印"failed"
  	// 返回新的状态是
  	// [[PromiseStatus]]: "resolved"
  	// [[PromiseValue]]: "resolved value"
    return 'resolved value'
  })
  // [[PromiseStatus]]: "resolved"
  // [[PromiseValue]]: "resolved value"
  // onFinally没有参数
  .finally(() => {
    // 执行一些清尾操作
  	// 改变promise的状态与状态值
  	return Promise.reject('error')
  })
  // [[PromiseStatus]]: "rejected"
  // [[PromiseValue]]: "error"
四、构造函数方法(all, race, resolve, reject)
Promise.all(iterable)
  1. Promise.all(iterable) 方法返回一个 Promise 实例
  2. 此实例在 iterable 参数内所有的 promise 都“完成(resolved)”或参数中不包含 promise 时回调完成(resolve)
  3. 如果参数中 promise 有一个失败(rejected),此实例回调失败(reject),失败原因的是第一个失败 promise 的结果
  4. [[PromiseValue]]值是当前的状态对应已解决的array对象值或已拒绝的错误值

参数iterable
— iterable不是可迭代对象

  1. 直接返回undefined再异步的返回rejected状态的promise
  2. 如果没有用then或者catch回调处理的话就抛出控制台错误

— iterable是可迭代对象

  1. 如果可迭代对象是空的就返回完成resolved状态的promise
  2. 如果可迭代对象不是Promise对象就返回一个异步的完成resolved状态的promise
  3. 其它情况下返回pending这个返回会在之后所有的promise都完成或者有一个失败的时候异步最后变成已拒绝(rejected)或者已解决(resolved)
iterable不是可迭代对象
// 控制台报错直接返回undefined
// 异步的返回rejected状态的promise
var promise = Promise.all(true)  // 不是可迭代对象
// 如果加上catch处理就不会报错
promise.catch(err => {})
iterable是可迭代对象
// 1. 空的可迭代对象
var promise = Promise.all('')  // 字符串也是可迭代的对象
// 直接返回已完成resolved状态的promise(同步)
console.log(promise)
#logs
Promise {<resolved>: Array(0)}
// a. 可迭代对象不是Promise对象就返回一个异步的完成resolved状态的promise
// b. 先返回pending再返回已完成的resolved状态的promise
var promise = Promise.all('abc')
// 先返回pending
console.log(promise)
setTimeout(() => {
  // 再返回resolved状态的promise
  console.log(promise)
})
#logs
Promise {<pending>}
Promise {<resolved>: ['a', 'b', 'c']}
// 先返回pending再返回已完成的resolved状态的promise
var promise = Promise.all([1, 2, Promise.resolve('success')])
console.log(promise)
setTimeout(()=> {
  console.log(promise)
})
#logs
Promise {<pending>}
Promise {<resolved>: [1, 2, "success"]}
// 先返回pending再返回已拒绝的rejected状态的promise
var promise = Promise.all([1, 
  Promise.resolve('success1'), 
  Promise.resolve('success2'), 
  Promise.reject('error')])
console.log(promise)
setTimeout(() => {
  console.log(promise)
})
#logs
Promise {<pending>}
Uncaught (in promise) error
Promise {<rejected>: "error"}
// 先返回pending再返回已拒绝的rejected状态的promise
var promise = Promise.all([ 
  Promise.resolve('success1'), 
  Promise.resolve('success2'), 
  Promise.reject('error')])
  
console.log(promise)
promise
  .then(value => console.log(value))
  .catch(e => console.log(e))
#logs
Promise {<pending>}
error
Promise.race(iterable)
  1. Promise.racel(iterable) 方法返回一个 Promise 实例
  2. 一旦迭代器中的某个promise解决或拒绝,返回的 promise就会解决或拒绝。
  3. 与all方法不同在处在于如果iterable是空的迭代对象就永远返回pending状态的promise
  4. 只要有一个已完成(resolved)或已拒绝(rejected)就直接返回完成或拒绝状态的promise
iterable空的可迭代对象
// 1. 空的可迭代对象
var promise = Promise.race('')  // 字符串也是可迭代的对象
// 永远返回已完成pending状态的promise(同步)
console.log(promise)
#logs
Promise {<pending>}
iterable不全是promise对象
var promise = Promise.race([1, 2, Promise.reject('error')])  // 字符串也是可迭代的对象
// 永远返回已完成pending状态的promise(同步)
console.log(promise)
#logs
Promise {<pending>}
Promise {<resolved>: 1}
race比速度
var p1 = new Promise((resolve, reject) => {
	setTimeout(resolve, 2000, 'resolved p1')
})
var p2 = new Promise((resolve, reject) => {
	setTimeout(resolve, 1000, 'resolved p2')
})
var p3 = new Promise((resolve, reject) => {
	setTimeout(reject, 800, 'rejected p3')
})
var promise = Promise.race([p1, p2, p3])  
console.log(promise)
console.log('macro')
promise
  .then(val => console.log(val))
  .catch(err => console.log(err))
#logs
Promise {<pending>}
macro
rejected p3
Promise.resolve(value)
  1. 返回一个以给定值解析后的resolved状态的Promise 对象
  2. 如果value是一个thenable对象(即带有then方法)返回值会根据这个then方法内部的状态而异步的采用它的最终状态
  3. 如果value是一个promise对象就直接返回value这个promise对象
平常的value值

—非thenable对象与promise对象

// 平常的value值
const promise = Promise.resolve([1, 2, 3])
// resolved状态的promise
console.log(promise)
promise.then(val => {
  // 打印[1, 2, 3]
  console.log(val)
})
#log
Promise {<resolved>: [1, 2, 3]}
[1, 2, 3]
value是thenable对象
// promise对象的value值, 异步的resolved状态
const thenable = {
  then(resolve, reject) {
    // resolved 状态
    resolve('resolve value')
    throw 'error' // 丢弃这个状态, 多次执行状态值改变无效
  }
}
const promise = Promise.resolve(thenable)
// pending
console.log(promise)
promise.then(val => {
  // resolved 状态
  console.log(promise)
  // 打印[1, 2, 3]
  console.log(val)
})
#log
Promise {<pending>}
Promise {<resolved>: "resolve value"}
resolve value
value是promise对象
// promise对象的value值
const promise = Promise.resolve(promise.reject('error'))
// rejected 状态
console.log(promise)
promise.catch(err => {
	console.log(err)
})
#log
Promise {<rejected>: "error"}
error
Promise.reject(reason)
  1. 返回一个带有拒绝原因reason参数的Promise对象
  2. 没有thenable, 与resolve方法不同
  3. 会原封不动的把reason拒绝的理由传递给catch处理
const promise = Promise.reject(new Error('error message'))
// rejected状态的promise
console.log(promise)
promise
  .then(val => {
    // 不会执行
    console.log(val)
  })
  .catch(err => {
  	// 打印错误信息
    console.log(err)
  }) 
#log
Promise {<rejected>: Error: error message}
Error: error message
JavaScript -- ES6的Promise 本文系统讲解了Promise在前端异步编程中的应用。首先分析回调函数的缺点(嵌套地狱),重点介绍Promise的实现原理:通过返回Promise对象和.then()链式调用实现异步顺序执行,并说明传参和错误处理机制。同时介绍了ES7的async/await语法糖,可消除.then()嵌套。还详细解析了Promise.all()和Promise.any()等原型方法的使用场景,通过商品查询案例演示其实际应用。最后预告将分享手写Promise的实现过程,帮助开发者深入理解异步编程原理。 阅读详情

相关推荐

Javascript.6——ES6【Promise基础】

好了,同学们,咱们终于到了这个阶段的最重要的一部分,也是内容最多的一部分,当然了,也是。相对来说,比较复杂的一部分,咱们前端学学开发呢,它其实坎儿不多啊,其中一个坎儿呢,就是在这儿。promise这是ES6给我们新搞出来这么一个东西,你要说不学这个玩意儿,能不能做开发呢?当然可以。但是呢,现在呢,在公司里边啊,很多异步场景的处理,异步我们之前讲过了,针对异步场景的处理呢很多地方都会使用这个promise,这个promise啊。它的作用呢,就是用来处理异步场景的,因为ES6觉得之前的异步场景太拉垮了。

weixin_63215361的博客 704

Promise--几个关键问题

1. Promise的几个关键问题 预备知识: promise 的基本流程 1.1 如何改变 promise 的状态? new Promise((resolve, reject) => { // 1. resolve 函数 // resolve('ok'); // pending => fulfilled (resolved) // 2. reject 函数 // reject("error");// pe

天行健 君子以自强不息,地势坤 君子以厚德载物。 451

LSTM量化选股实战:从数据清洗到回测归因的工程化闭环

LSTM(长短期记忆网络)是一种专为建模长程依赖而设计的循环神经网络,其门控机制能有效应对金融时序数据的非线性、高噪声与动态演化特性。相比传统统计模型或简单RNN,LSTM在股价趋势建模中展现出更强的鲁棒性与泛化能力,尤其适合处理日频多因子时序信号。其技术价值不仅在于提升预测精度,更在于支撑可归因、可审计的量化策略工程实践——从特征构建、标签定义到滚动回测,每一步都需严防未来信息泄露与过拟合风险。典型应用场景包括A股多因子选股、行业轮动信号生成及Alpha组合优化。本文聚焦LSTM在真实量化场景中的落地难点

weixin_33158887的博客 400

Promise 失败和捕捉以及异步报错

异步报错的概念&promise中fail和catch方法的区别 文章地址: Promise 失败和捕捉以及异步报错

weixin_40863414的博客 991

保姆级教程:手把手教你下载和配置Waymo自动驾驶数据集(附百度网盘链接)

本文提供了一份详细的Waymo自动驾驶数据集下载和配置指南,特别针对国内研究者优化了数据获取方案,包括百度网盘链接和Google Cloud CLI配置。文章还涵盖了环境配置、数据处理实战、可视化分析以及进阶技巧,帮助开发者高效利用这一业界黄金标准数据集进行自动驾驶研究。

weixin_42651281的博客 372

双通道中频信号数字下变频及相位差估计(FPGA)

双通道中频信号数字下变频及相位差估计实验 一、上框图(通俗易懂) 二、实验要求 1、 用点频信号模拟中频信号:中频信号由DDS1和DDS2产生。具体产生方法见第2点。 2、 DDS1和 DDS2:调用IPcore里的数字信号处理中的NCO模块,工作时钟为100MHz,数据率即为100MHz,DDS1和DDS2的频率为:(学号后三位+500)Khz+f0(可设为20MHz);输出为16位;DDS1...

qq_39809425的博客 6948

js 将数字用千分位表示

数字使用千分位表示第一种:toLocaleString()第二种:使用正则表达式替换 在涉及到金额的情况下,一般来说,都需要用千分位的方式进行展示。更利于用户阅读。 接下来介绍两种常用的方案。 第一种:toLocaleString() toLocaleString() 方法返回这个数字在特定语言环境下的表示字符串。具体用法可查看MDN介绍 第二种:使用正则表达式替换 function format(number) { const num = String(number) const reg = /

weixin_42556438的博客 2809

C#连接数据库报Authentication to host ‘127.0.0.1‘ for user ‘root‘ using method ‘caching_sha2_password‘ fail

所以导致的,除了上边的办法,还可以把这个加密规则修改一下,这个的修改方式有很多,具体原因是因为MySQL8.0以前的加密规则是。

weixin_42209881的博客 4131

关于 Module build failed: ReferenceError: Promise is not defined 错误

webpack打包的时候报错:Module build failed: ReferenceError: Promise is not definedERROR in ./~/css-loader!./style.css Module build failed: ReferenceError: Promise is not defined at LazyResult.async (D

chenjiaang的博客 1万+

从零到一:Qt与PCL的跨平台开发环境搭建全攻略

本文详细介绍了从零开始搭建Qt与PCL跨平台开发环境的完整流程,涵盖Windows、Linux和macOS三大平台。重点解析了Qt5与Qt6版本选择、PCL库安装配置、VTK集成等关键技术要点,并提供跨平台CMake项目模板和常见问题解决方案,助力开发者快速构建三维点云处理应用。

weixin_29280657的博客 384

【如何学习CAN总线测试】——AUTOSAR网络管理自动化测试(CAPL源码)

上一章介绍的是AUTOSAR网络管理如何测试、用例设计,对于不满足手工测试的同学,本章就介绍AUTOSAR网络管理自动化测试。

测试领域技术分享 6239

关于promise 的 PromiseStatus : “resolved”、PromiseValue return 值是 undefined

//上源代码 const promise1 = new Promise((resolve, reject) => { console.log('promsie1') resolve('resolve1') }) const promise2 = promise1.then(res => { console.log(res) // return res

Baron的技术blog 2697

SOI LDMOS器件的Sentaurus TCAD建模与关键电学特性仿真研究

本文研究了SOI LDMOS器件的TCAD建模与电学特性仿真。通过Sentaurus TCAD平台建立了单RESURF结构的SOI LDMOS模型,详细阐述了器件结构原理和RESURF耐压机制。研究采用SDE进行几何定义和掺杂配置,在Sentaurus Device中构建了完整的物理模型体系,包括迁移率、复合和碰撞电离模型。通过系统仿真提取了器件的转移特性、输出特性和击穿特性等关键参数,分析了各参数对性能的影响规律。研究结果为功率半导体器件的仿真建模提供了规范化参考,有助于优化SOI LDMOS的性能设计。

huanghm88的专栏 134

ES6 - 基础学习(8): Promise 对象

概述 Promise是异步编程的一种解决方案,比传统的解决方案(多层嵌套回调、回调函数和事件)更强大也更合理。从语法上说,Promise是一个对象,从它可以获取异步操作的消息,Promise 还提供了统一的 API,各种异步操作都可以用同样的方法进行处理。 Promise的出现很好的解决了回调地狱这一难题,在之前ES5中多层嵌套回调时,回调代码层次过多,嵌套太深,时间久了既不利于相关代码的理解也不利于代码后期维护以及后续迭代开发,因此Promise才尤为重要。 Promise状态 状态特点:   ...

whyrookie的博客 145

PCB板Gerber文件的理解和制作

Gerber文件是PCB生产的关键文件,主要包括:1)走线层(GTL/GBL);2)阻焊层(GTS/GBS);3)丝印层(GTO/GBO);4)板框层(GMx/GKO);5)钢网层(Gtp/GBp);6)钻孔文件(NCdrillFiles)。其中1-10项和15项钻孔文件必须提供,建议包含11-14项辅助钻孔层。Gerber文件不含过孔属性,需提前在AD中设置过孔盖油。导出步骤包括:导出非机械层、机械层和钻孔层,新版AD可通过"文件->制造输出->GerberFiles"操作

qq_37999850的博客 854

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

ES6-ES14的变化

都会直接修改原数组(原地变异),在 React/Vue 等框架的状态管理中极易引发 Bug。ES14 推出了这组方法,它们都会。如果在模块的顶层直接使用,会报语法错误。:等待所有 Promise 完成(无论成败),返回结果数组,不会因某个失败而中断。,这使得在模块加载阶段执行异步操作(如动态导入、获取配置等)变得极其简单。:配合异步迭代器,按顺序处理流式数据(如文件读取、流式 API)。这是 JS 历史上最大的一次更新,奠定了现代前端开发的基础。的键,这为私有数据的存储提供了更灵活、更安全的方式。

weixin_42441183的博客 220

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

ES6全集基础总结(下)

一:对象的扩展 1:object方法的扩展 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> </body> <script type="text/javascript"> //Object() 将参数变成对象 console.log(Object

qq_42453562的博客 285

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

ES6的Promise详解

本篇文章主要介绍了ES6语法中的Promise对象的使用详解,promise对象是JS进阶学习中的重要知识点,如果本文对你有所帮助请三连支持博主,你的支持是我更新的动力,先赞后看养成习惯。以下是本篇文章正文内容。

程序员柒的博客 6084

es6的Promise对象详解

秋招已经进入了尾声,这两个月以来一直忙着找工作,没有时间看新东西,这几天得空将es6的Promise对象又细细的理解了一下,所以下来整理一下我对Promise对象以及用法的理解。什么是Promise?为什么要使用Promise? 当我们使用js的异步调用时通常习惯使用回调函数,这样的代码简单便于理解,但是当回调嵌套的时候就会造成代码混乱,不好梳理,比如:function fun1(arg1,fun

csdn_zsdf的博客 7141

【ES6】Promise对象详解

【ES6】Promise对象详解一、Promise对象的含义二、Promise对象的用法三、Promise对象的几个应用【重点】1、时间延迟函数2、图片异步加载 引言:ES6新增的Generato、Promise、async都与异步编程有关。这里我们讲述Promise对象。 一、Promise对象的含义   所谓Promise就是一个对象,用来传递异步操作的消息。它代表了...

十一月廿七风雨大作 6946

ES6——17. Promise对象

到了那个时候,Promise 的运行已经结束了,所以这个错误是在 Promise 函数体外抛出的,会冒泡到最外层,成了未捕获的错误。方法接受一个数组作为参数,数组的每个成员都是一个 Promise 对象,并返回一个新的 Promise 对象。这就是说,Promise 内部的错误不会影响到 Promise 外部的代码,通俗的说法就是“Promise 会吃掉错误”。事件的监听函数有两个参数,第一个是错误对象,第二个是报错的 Promise 实例,它可以用来了解发生错误的环境信息。方法,依次指定了两个回调函数。

chtazycdf的博客 1708

ES6 - 从Promise入门到深入原理(手写一个自己的Promise)

事件和回调函数的缺陷 我们习惯于使用传统的回调或者事件处理来解决异步问题 事件: 某个对象的属性是一个函数, 当发生一件事时, 运行该函数 dom.onclick = function() { // ...执行的代码 } 回调:运行某个函数以实现某个功能的时候, 传入一个函数作为参数, 当某个特定的条件下的时候, 就会触发该函数 dom.addEventListner('click', ...

前端攻城狮Dannis 5269

ES6 Promise 对象

ES6 Promise 对象

m0_52913477的博客 1415

【前端】ES6:Promise对象和Generator函数

这也是Promise这个名字的由来,它的英语意思是“承诺”,一旦承诺成效,就不得再改变了。执行Generator函数会返回一个遍历器对象,也就是说,Generator函数除了状态机,还是一个遍历器对象生成函数。当一个回调函数嵌套一个回调函数的时候,就会出现一个嵌套结构,当嵌套的多了就会出现回调地狱的情况。Promise是异步编程的一种解决方案,比传统的解决方案回调函数,更合理和更强大。方法同样是将多个Promise实例,包装成一个新的Promise实例。p的状态由p1,p2,p3 决定,分成两种情况。

weixin_45980065的博客 1587

JS | ES6新增对象 - Promise使用方法详解

Promise是异步编程的一种解决方案,可以替代传统的解决方案--回调函数和事件。ES6统一了用法,并原生提供了Promise对象。作为对象,Promise有一下两个特点: * (1)对象的状态不受外界影响。 * (2)一旦状态改变了就不会在变,也就是说任何时候Promise都只有一种状态。

青春木鱼的博客 2825

es6中的promise对象

then中传了两个参数(这两个参数均为回调函数),then方法可以接受两个参数,第一个对应resolve的回调,第二个对应reject的回调。resolve函数的作用,将Promise对象的状态从“未完成”变成“成功”(即从Pending变为Resolved),在异步操作成功时调用,并将异步操作的结果,作。then方法是promise的最基本的方法,返回的是两个回调,一个成功的回调,一个失败的回调,实现过程如下。reject函数的作用是,在异步操作失败时调用,并将异步操作报出的错误,

2501_90207151的博客 765
上一篇: nodejs配置http2
下一篇: 盒子模型
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值