AJAX的Promise(原理)

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta http-equiv="X-UA-Compatible" content="IE=edge">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>认识Promise</title>

</head>

<!-- Promise:对象用于表示一个异步操作的最终完成(或失败)及其结果值

好处:

1.逻辑更清晰

2.了解axios函数内部运作机制

3.能解决回调函数地域问题

为什么学习Promise?

成功和失败状态,可以关联对应处理程序,了解axios内部原理

-->

<!-- Promise的三种状态

待定(pending):初始状态,既没有被兑现,也没有被拒绝

已兑现(fulfilled):意味着,操作成功完成

已拒接(rejected):意味着,操作失败

注意:Promise对象一旦被兑现/拒接就是已敲定了,状态无法再被改变

Promise作用:状态改变后调用关联的处理函数

-->

<body>

<script>

/**

* 目标:使用Promise管理异步任务

*/

// 1. 创建Promise对象(pending待定状态)

const p = new Promise((resolve, reject) => {

// 成功调用:resolve(值)触发then()执行

// 失败调用:reject(值)触发catch()执行

// Promise对象创建时,这里的代码都会执行了

// 2. 执行异步代码

setTimeout(() => {

// resolve('模拟AJAX请求-成功结果')

// resolve() => 'fulfilled状态-已兑现' => then()

reject(new Error('模拟AJAX请求-失败结果'))

// reject() => 'rejected状态-已拒绝' => catch()

}, 2000)

})

// 3. 获取结果

p.then(result => {

console.log(result)

// 成功调用

}).catch(error => {

console.log(error)

// 失败调用

})

</script>

</body>

</html>

相关推荐
滕青山几秒前
URL编码/解码 核心JS实现
前端·javascript·vue.js
菜鸟小芯1 小时前
【GLM-5 陪练式前端新手入门】第五篇:响应式适配 —— 让个人主页 “见机行事”
前端·人工智能
无名之逆2 小时前
你可能不需要WebSocket-服务器发送事件的简单力量
java·开发语言·前端·后端·计算机·rust·编程
加农炮手Jinx2 小时前
Flutter for OpenHarmony:web_socket_channel 全平台 WebSocket 通信标准库,从原理到鸿蒙实战(3000字深度解析)
android·前端·网络·websocket·flutter·华为·harmonyos
王码码20352 小时前
Flutter for OpenHarmony:web_socket 纯 Dart 标准 WebSocket 客户端(跨平台兼容性之王) 深度解析与鸿蒙
android·前端·websocket·网络协议·flutter·华为·harmonyos
柳杉2 小时前
使用AI从零打造炫酷的智慧城市大屏(开源):React + Recharts 实战分享
前端·javascript·数据可视化
A_B_C_Q3 小时前
StringBuilder 与 StringBuffer的区别
java·前端
洋洋技术笔记3 小时前
vue3+vite+elementplus简单介绍
前端
Joker Zxc3 小时前
【前端基础(Javascript部分)】2、JavaScript的变量和数据类型
开发语言·前端·javascript
yuki_uix3 小时前
别再死记优缺点了:聊聊 REST、GraphQL、WebSocket 的使用场景
前端