0
点赞
收藏
分享

微信扫一扫

第三十二天|动态规划| 理论基础,509. 斐波那契数,70. 爬楼梯 ,746. 使用最小花费爬楼梯

Gaaidou 2024-11-21 阅读 3

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>
举报

相关推荐

0 条评论