文章目录
前言
为学习axios打基础。本尚硅谷Web前端Promise教程从入门到精通系列博客内容介绍。
Promise是ES6引入的进行异步编程的新的解决方案,从语法上说它是一个构造函数,可以封装异步的任务,并且可以对结果进行处理。Promise最大的好处在于可以解决回调地狱的问题,并且在指定回调和处理错误方面更加灵活,在Web或者App项目中应用十分广泛,无论前端还是后端都可以看到Promise的身影,且是现在面试的高频题目,想进入一线大厂必须掌握Promise内部运行的原理。
尚硅谷Web前端Promise教程从入门到精通系列博客主要包含以下五部分:Promise 介绍与基本使用、Promise API、Promise 关键问题、Promise 自定义封装、async 与await。
提示:以下是本篇文章正文内容,下面案例可供参考
Promise API
1. Promise 构造函数:
Promise (excutor) {} ,它的参数为一个函数,而这个函数的形参也是函数。
(1) executor 函数: 执行器 (resolve, reject) => {}
(2) resolve 函数: 是内部定义成功时我们调用的函数,注意是“调用”不是“回调的函数”。
(3) reject 函数: 是内部定义失败时我们调用的函数
说明: executor 会在 Promise 内部立即同步调用,异步操作在执行器中执行。
什么是同步调用?如下面代码和图所示,就是接着执行,代码执行完毕顺序,与编写顺序相同。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Promise API</title>
</head>
<body>
<script>
//
let p = new Promise((resolve, reject) => {
// ** 同步调用
console.log(111);
//修改 promise 对象的状态
reject('error');
});
console.log(222);
//执行 catch 方法
p.catch(reason => {
//console.log(reason);
});
</script>
</body>
</html>
2. Promise.prototype.then 方法
其参数为两个函数 onResolved => {} 和onRejected=> {}。
(1) onResolved 函数: 是异步操作成功的回调函数
(2) onRejected 函数: 是异步操作失败的回调函数
说明: 指定用于得到成功value的成功回调和用于得到失败reason的失败回调返回一个新的promise对象
3. Promise.prototype.catch 方法
其参数为一个函数(onRejected) => {} 。
onRejected 函数: 是异步操作失败的回调函数
示例代码如下:
<!DOCTYPE htm