JS-11-es6常用知识-Promise(6K字超级详解!!)

发布于:2024-06-07 ⋅ 阅读:(146) ⋅ 点赞:(0)

文章目录

1 回调地狱

2 Promise函数基本用法

3 Promise函数实现多层回调

 4 Promise传参

5 Promise 错误处理

5.1 两种错误处理方式

5.2 catch捕获错误

5.3 多层异步种使用catch

6 使用 Promise 的优势


1 回调地狱

1)为什么要有promise?

   解决(回调地狱)的问题 

2)什么是回调?

    回调(Callback)是一种编程模式,其中一段可执行的代码(即回调函数)作为参数传递给另一个函数(即主函数),并在需要时由主函数执行。这种机制允许主函数在特定事件或条件满足时,调用并执行之前注册的回调函数。

function greet(name, callback) {  
  console.log(`Hello, ${name}!`);  
  callback(); // 调用回调函数  
}  
  
function sayGoodbye() {  
  console.log('Goodbye!');  
}  
  
greet('Alice', sayGoodbye); // 输出 "Hello, Alice!" 和 "Goodbye!"

     在这个示例中,greet函数接受一个name参数和一个callback回调函数作为参数。当greet函数被调用时,它会先输出一条问候语,然后调用callback回调函数。在这个例子中,sayGoodbye函数被作为回调函数传递给greet函数,并在greet函数内部被调用。

3)什么是回调地狱?

    回调地狱(Callback Hell)是指在编写异步JavaScript代码时,回调函数嵌套的现象越来越深,导致代码的可读性变差、维护性变差、复杂度增加、错误率增加等问题。回调地狱通常表现为深度嵌套并且难以阅读的代码,例如:

    //跟以前的if条件地狱很像
    // if(){
    //     if(){
    //         if(){
    //         }
    //     }
    // }

    $.get("/getUser",function(res){
        $.get("/getUserDetail",function(){
            $.get("/getCart",function(){
                $.get("/getBooks",function(){
                    //...
                })
            })
        })
    })

    //node开发:读取文件;开个服务器、接收一个请求、请求路径、访问数据库

2 Promise函数基本用法

     例1:下面代码是一个使用 Promise 来封装异步操作(在这个例子中是使用 jQuery 的 $.get 方法来发送一个 GET 请求到 "/getUser")的例子:执行顺序:abcd

    var promise=new Promise((resolve,reject)=>{
        //b 把需要执行的异步操作放在这里
        $.get("/getUser",res=>{
            //获取数据的异步操作已经执行完毕了,等待下一步的执行,通过执行resolve函数,告诉外界你可以执行下一步操作了
            //c、
            resolve(res)
            //而执行的下一步操作,其实就是写在then的回调函数中的
        })
    })
    //a、
    promise.then(res=>{
        //d、执行后续的操作
        console.log(res);
    })

1)创建 Promise

var promise = new Promise((resolve, reject) => {  
    // ...  
});

      这里,创建了一个Promise 实例。Promise 是一个对象,它代表一个最终可能完成(也可能被拒绝)的异步操作及其结果值。Promise 构造函数接受一个执行器函数,这个函数有两个参数:


网站公告

今日签到

点亮在社区的每一天
去签到