初步学习promise,从使用方法到常见题目

本文介绍了Promise作为JavaScript异步编程解决方案的核心特点,包括它的三种状态(pending、fulfilled、rejected)以及如何创建和使用Promise对象。讨论了Promise的基本API如.then(), .catch(), .all(), .race()等,并提供了常见的Promise面试题及其解析,帮助读者深入理解Promise的工作原理。" 86713396,7376207,内容关联推荐:基于内容的CB算法详解,"['推荐系统', '内容分析', '机器学习', '信息检索', 'NLP']
摘要由CSDN通过智能技术生成

什么是promise

promise是JS的一种异步编程解决方案。setTimeout和Ajax都是常见的异步回调方案,但是他们都有一个问题,就是对于复杂的回调会产生层层嵌套的问题,代码会像一个横放的金字塔意一样一层套一层,编码体验极差。promise的多重链式回调可以很好的解决这个问题。

怎么用promise

首先promise对象代表的是现在未完成,但是将来会完成的操作。它一共有三个状态:

  • pending,代表初始状态
  • fulfilled,代表操作成功
  • rejected,代表操作失败
    promise的状态只会改变一次,改变了就会一直保持这个状态
构建一个promise对象
var promise = new promise(function (resolve,reject) {
   

}

promise的参数为函数,resolve是一部操作执行成功时执行的函数,reject是异步操作执行失败时执行的函数。

promise的基本api

1.then()
.then()方法可以指定resolve和reject状态下回调的函数

promise.then(function (data) {
   
//操作成功状态执行的内容
},function (error) {
   
//操作失败状态执行的内容
})

2.catch()
.catch()方法用于指定发生错误时的回调函数,可以看作是用来捕获错误的。虽然用.then()方法就可以指定reject状态下的回调函数,但是promise对象抛出的错误不会传递到外层代码,浏览器就不会抛错(除了chrome)。

promise.catch(function (error) {
   
})

3.all()
.all()方法的作用是将多个promise实例包装成一个新的promise实例,且只有所有promise实例状态都变成fulfilled,新的promise实例状态才会变成fulfilled。
只要有一个是rejected,新实例的状态就会变成rejected。

var p1 = new Promise(function (resolve, reject) {
   
    setTimeout(resolve, 3000, "first");
});
var p2 = new Promise(function (resolve, reject) {
   
    resolve('second');
});
var p3 = new Promise((resolve, reject) => {
   
  setTimeout(resolve, 1000, "third");
}); 

Promise.all([p1, p2, p3]).then(function(values) {
    
  console.log(values); 
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值