当前位置: 首页 > article >正文

【django】扩展

1. Promise

1.1 对象和状态

是什么?
	是前端开发时js中的一个对象(包裹)。【对象】【异步请求】

# 对象中有一个状态的值,status
# 创建对象,不赋值,status=pendding
let v1 = new Promise(function(resolve, reject){})

# 创建对象,为resolve赋值,status=fufilled
let v2 = new Promise(function(resolve, reject){
	resolve("okk")
})
可以简写为: let v2 = Promise.resolve("okk")

# 创建对象,为reject赋值,status=rejected
let v3 = new Promise(function(resolve, reject){
	reject("okk")
})
可以简写为: let v3 = Promise.reject("haha")

1.2 回调函数

对象 = Promise ...
对象.then(函数1, 函数2)
对象.then(函数3, 函数4)
对象.catch(函数5)

关于回调函数的执行:
	- 状态=pendding,回调函数都不会被执行
	- 状态=fufilled,基于then添加进去的第一个回调函数,就会被触发执行。即函数1和函数3
	- 状态=rejected,基于then添加进去的第二个回调函数,就会被触发执行,且基于catch添加的函数也会被执行。即函数2和函数4和函数5

示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script type="text/javascript">
    let v1 = new Promise(function (resolve, reject) {
        // 状态为pendding
        // resolve("OK")  // 状态为fufilled 值为"OK"
        reject("INFO")  // 状态为rejected 值为"INFO"
    })

    v1.then(
        function (res) {
            console.log(res)
        },
        function (reason) {
            console.log(reason)
        }
    )
</script>
</body>
</html>

1.3 then的返回值

对象=Promise ...
返回值 = 对象.then(函数1, 函数2)
返回值.then(函数3,函数4)
如果在函数1中,返回一个新的Promise对象,接下来执行函数3或函数4,取决于:函数1返回的那个Promise对象的状态。

示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script type="text/javascript">
    let v1 = new Promise(function (resolve, reject) {
        // resolve("INFO")  // 状态为rejected 值为"INFO"
        reject("INFO")
    })

    let v2 = v1.then(
        function (res) {
            console.log("111: ", res)
            console.log("v1: fufilled")
            return new Promise(function (resolve, reject) {
                resolve("hhh")  // 状态为fufilled 值为"INFO"
            })
        },
        function (reason) {
            console.log("222: ", reason)
            console.log("v1: rejected")
            return new Promise(function (resolve, reject) {
                reject("aaa")  // 状态为rejected 值为"INFO"
            })
        }
    )
    v2.then(
        function (res) {
            console.log("333: ", res)
        },
        function (reason) {
            console.log("444: ", reason)
        }
    )
</script>

</body>
</html>

http://www.kler.cn/a/408226.html

相关文章:

  • 人脸检测开源项目介绍【持续更新】
  • Linux中,防火墙基本操作指令
  • 从零开始-VitePress 构建个人博客上传GitHub自动构建访问
  • Java SE 与 Java EE:基础与进阶的探索之旅
  • 电子应用设计方案-19:智能云饭锅系统方案设计
  • 采用python3.12 +django5.1 结合 RabbitMQ 和发送邮件功能,实现一个简单的告警系统 前后端分离 vue-element
  • TCP为什么需要三次握手?两次握手或四次握手可以吗?
  • LeetCode 904.水果成篮
  • YOLOv10改进,YOLOv10添加KANConv卷积,CVPR2024
  • Spring Boot OA:打造现代化企业办公环境
  • Web 端语音对话 AI 示例:使用 Whisper 和 llama.cpp 构建语音聊天机器人
  • 4.1_未授权漏洞
  • DataGrip 连接 Redis、TongRDS
  • 【FPGA-MicroBlaze】串口收发以及相关函数讲解
  • docker搭建私有的仓库
  • Python和R基因组及蛋白质组学和代谢组学
  • Java技术分享
  • 运维Tips:Docker或K8s集群拉取Harbor私有容器镜像仓库配置指南
  • 《泰拉瑞亚》PC+手机版安装教程
  • ubuntu 安装 yum 无法定位问题
  • 云计算-华为HCIA-学习笔记
  • 经验笔记:Git 中的远程仓库链接及上下游关系管理
  • mybatis学习(一)
  • Transformer详解及衍生模型GPT|T5|LLaMa
  • 写时复制,读时加载
  • 从零开始学习数据库 day0(基础)