ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Promise的关键点笔记

2021-06-20 22:52:52  阅读:162  来源: 互联网

标签:异步 resolve 函数 笔记 Promise reject catch 关键点


Promise简介:

Promise对象用于表示一个异步操作的最终状态(完成或失败),以及该异步操作的结果值。


Promise的次要作用:

Promise是为了解决代码的嵌套问题。

有了Promise对象,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。此外,Promise对象提供统一的接口,使得控制异步操作更加容易。


Promise的特点:

Promise里的内容会立即执行。


Promise的三个状态:

  • pedding(进行中)
  • rejected(已失败)
  • fulfilled(已成功)

只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。这也是Promise这个名字的由来,它的英语意思就是“承诺”,表示其他手段无法改变。


Promise的使用:

const promise = new Promise((resolve, reject) => {
	if (/* 异步操作成功 */) {
		resolve(value);
	} else {
		reject(error);
	}
})

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

也可以使用.then.catch.finally进行处理:

const promise = new Promise((resolve, reject) => {
	// 发起异步请求
	
	if (/* 异步操作成功 */) {
		resolve(value); // resolve对应.then方法
	} else {
		reject(error); // reject对应.then方法的第二个参数,和.catch方法
	}
});
promise.then((data) => {
	console.log("这是resolve过来的")
}, (err) => {
	console.log("这是reject过来的")
})
promise.catch((err) => {
	console.log("这是reject过来的")
})
promise.finally(() => {
	console.log("不管咋地都会执行我")
})

Promise.all的使用:

const promise1 = new Promise((resolve, reject) => {
	// 像上面一样进行异步操作然后触发resolve和reject
});
const promise2 = new Promise((resolve, reject) => {
	// 像上面一样进行异步操作然后触发resolve和reject
});
Promise.all([promise1, promise2])
	.then(([data1, data2]) => // 全部成功进行处理)
	.catch(([err1, err2]) => // 有任意一个失败进行处理)
	.finally(() => // 无论如何都会执行)

注意,如果作为参数的 Promise 实例,自己定义了catch方法,那么它一旦被rejected,并不会触发Promise.all()的catch方法。

Promise的小技巧及注意事项

  1. Promise的.then是成功后触发的回调函数,回调函数中的参数是请求回来的内容。
  2. 有任何一个Promise是reject的,就会执行catch回调函数,回调函数中是错误信息。
  3. Promise的.then可以链式调用。
  4. 不管是then还是catch都会执行finally。
  5. Promise.all(参数是一个数组,数组里面放Promise)。 注意:必须是全部都是成功返回才会执行,有其中任意一个出错都不会执行.then(rejected)。

小总结:

Promise对象一般用来处理异步(请求)事件的,根据异步请求回来的结果去操作相对应的成功或者失败的回调函数,Promise对象有一个参数是函数,这个函数又有俩个参数分别是resolve和reject,(这是俩个函数)分别代表成功和失败,如果成功了你可以调用resolve()而后通过你这个Promise对象的.then去进行操作,如果失败了可以调用reject()而后通过Promise对象的.then的第二个参数或者.catch进行失败的处理。.catch的用处就是在你的Promise对象中触发了reject后才会走.catch。Promise还有一个.finally不管是resolve还是reject都会执行。

标签:异步,resolve,函数,笔记,Promise,reject,catch,关键点
来源: https://blog.51cto.com/u_15275953/2928972

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有