简单理解promise。。。

promise

在 Axios 中,Promise 是一种用于异步编程的设计模式。它提供了一种更优雅的方式来处理异步请求的结果,让代码的逻辑更加清晰,promise代表了一个尚未完成但预期将来会完成的操作的最终结果。

promise的构造

创建一个Promise对象时要接受两个参数,resolvereject这两个构造函数。

  • 如果HTTP请求成功,服务器返回了数据,那么你可以调用resolve函数,并将数据作为参数传递给它。
  • 如果HTTP请求失败了,比如服务器返回了一个错误,那么你可以调用reject函数,并将错误信息作为参数传递给它。

三个实例方法

  • then方法:用于指定当Promise对象状态变为fulfilled时要执行的操作。 它接收两个参数:一个是当Promise对象成功时要执行的回调函数,另一个是当Promise对象失败时要执行的回调函数。
  • catch方法用于指定当Promise对象状态变为rejected时要执行的操作。它只接收一个参数,即当Promise对象失败时要执行的回调函数。
  • finally方法用于指定无论Promise对象最后状态如何,都会执行的操作。它接收一个回调函数作为参数。

链式调用

链式调用:将多个异步操作串联起来,形成一个线性的执行顺序。在链式调用中,每个 Promise 的成功结果(通过 resolve 函数)可以直接传递给下一个 Promise,而错误(通过 reject 函数)可以被 .catch() 方法捕获和处理。

// 将异步函数转换为返回 Promise 的形式
		function getUser() {
		    return new Promise((resolve, reject) => {
		        setTimeout(() => {
		            if(true){
						resolve({ name: 'Alice' })
					}else{
						reject('1')
					}
		        }, 1000);
		    });
		}
		
		function sendEmail(user) {
		    return new Promise((resolve, reject) => {
		        setTimeout(() => {
					if(false){
						console.log(`Sending email to ${user.name}`);
						resolve('Email sent');
					}else{
						reject('2');
					}
		        }, 500);
		    });
		}
		
		function saveLog(message) {
		    return new Promise((resolve, reject) => {
		        setTimeout(() => {
		            console.log(`Log saved: ${message}`);
		            resolve('Log saved');
		        }, 500);
		    });
		}
			
		getUser()
		    .then(user => sendEmail(user))
		    .then(emailResult => saveLog(emailResult))
		    .then(logResult => console.log('All tasks completed'))
		    .catch(error => console.error(error));

感觉这篇写的蛮不错

看完这篇blog你要是还不能理解Promise那就…-CSDN博客

相关推荐

  1. 简单理解promise。。。

    2024-03-17 18:32:03       22 阅读
  2. Promise理解

    2024-03-17 18:32:03       12 阅读
  3. promise

    2024-03-17 18:32:03       35 阅读
  4. Promise

    2024-03-17 18:32:03       30 阅读
  5. Promise

    2024-03-17 18:32:03       14 阅读
  6. <span style='color:red;'>Promise</span>

    Promise

    2024-03-17 18:32:03      13 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-17 18:32:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-17 18:32:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-17 18:32:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-17 18:32:03       18 阅读

热门阅读

  1. python爬取B站CC字幕(隐藏式字幕)

    2024-03-17 18:32:03       18 阅读
  2. 微服务的无状态、版本控制向后兼容、流量整型

    2024-03-17 18:32:03       16 阅读
  3. IBatis与MyBatis区别

    2024-03-17 18:32:03       18 阅读
  4. MongoDB聚合运算符:$expMovingAvg

    2024-03-17 18:32:03       14 阅读
  5. 【每日前端面经】2024-03-14

    2024-03-17 18:32:03       18 阅读
  6. Git中的换行符CRLF和LF问题

    2024-03-17 18:32:03       21 阅读