Es6中promise的解释用法以及何为同步异步、回调函数和回调地狱?

一.什么是回调函数?

        1. 含义

                ★ 回调函数是一种特殊的函数,它作为参数传递给另一个函数,并在特定事件或条件发生时被调用执行

        2. 回调函数在编程中扮演着重要的角色,主要用于以下场景:

                ① 事件处理:在图形用户界面(GUI)或其他事件驱动的应用程序中,回调函数常用于处理用户交互和事件触发

                ② 异步编程:在异步编程中,回调函数用于在任务完成时通知调用方,而不必等待任务的完成,从而提高应用程序的响应性。

                ③ 处理操作系统和框架的API:回调函数常用于处理各种操作系统和框架的API,以实现对特定事件或条件的响应。

                ④ 自定义扩展:通过回调函数,用户可以在库或框架中插入自定义代码,以满足其特定需求,提供更大的灵活性。

二. 什么是回调地狱?

        1. 含义

           ★ 回调地狱是指在异步编程中,由于多个回调函数嵌套调用,导致代码可读性差、维护困难的情况。这种情况常见于使用回调函数处理异步任务的编程模式中。在回调地狱中,当一个异步任务完成时,会触发一个回调函数,而这个回调函数可能又会触发下一个异步任务,并且这种嵌套的结构可能一直延续下去。这样的代码结构会导致代码嵌套层级过深,使得代码可读性差,难以维护和调试。

        2. 解决方法

             ★ 为了解决回调地狱问题,可以使用一些技术手段,如Promise、async/await等。Promise可以将回调函数的嵌套改为链式调用提高代码的可读性。而async/await则是基于Promise的一种语法糖,可以更加简洁地处理异步任务。总的来说,回调地狱是异步编程中常见的问题,通过采用这些技术手段可以有效解决。

三. 什么是同步、异步?

         在广义上,同步和异步是描述两个或多个事件、操作或进程之间的关系。

                ① 同步意味着事件、操作或进程是有序的,一个操作必须在另一个操作完成后开始执行,也就是等待上一同步任务执行完毕,才执行下一个同步任务
                ② 异步则意味着事件、操作或进程是独立的,可以在不等待其他操作完成的情况下开始执行,也就是等待所有同步任务执行完毕,在执行异步任务
         同步和异步的概念可以应用于各种计算场景,如并发编程、分布式系统、通信协议等。

四. promise的解释

        1. Promise是什么?

                ① Promise汉语意思为许诺、承诺,是es6新增的异步编程解决方案在代码中表现为一个对象;② Promise是一个构造函数,是 JavaScript 中的一种异步编程模式,用于更好地处理异步操作(如异步请求(例如网络请求)、文件读写等)和避免回调地狱(Callback Hell);③ Promise 表示一个异步操作的最终完成或失败。

        2. Promise有三种状态,分别是:

                ① Pending(进行中) 初始状态

                ② Fulfilled (已成功) 意味着操作成功

                ③ rejected (已失败) 意味着操作失败

注意:① Promise对象的三种状态,不受外界的影响,只有promise中存放的将来会结束的事件才会影响。也就是只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态;② Promise状态一旦改变、是不可逆的,Pendding(进行中)状态可以转变为Fulfilled(已成功)状态,也可以转变为 rejected(已失败)状态,promise只有这两种情况发生状态改变,一旦发生这两种状态改变,那么状态就凝固了,会一直保持这个结果;③ Promise 进入已成功状态,将执行 then() 方法中的回调函数;当 Promise 进入已失败状态,将执行 catch() 方法中的回调函数。

        3. 链式调用

                ★ Promise 允许您将多个异步操作按顺序串联起来,以更清晰和可读的方式处理异步任务。

        4.错误处理

                ★ Promise 提供了 .catch() 方法,用于捕获异步操作中的错误,使错误处理更加方便。

        5.可等待性

                ★ Promise 允许您等待异步操作的完成,然后执行特定的回调函数。

五. 如何创建Promise对象?

        1. 可以理解为promise对象就是一个盒子,那么如何创建Promise盒子呢?

                ★ 在JavaScript中,你可以使用new Promise()构造函数来创建一个Promise对象。Promise对象用于处理异步操作,它允许你在将来的某个时刻传递异步操作的成功或失败结果。

 以下是创建Promise对象的基本语法(调用resolve()方法可以将promise对象转成成功状态,调用reject()方法可以将promise对象转成失败状态
):     

 下面是一个创建Promise对象的例子,该对象表示一个将在未来某个时刻完成的异步操作

★ 在这个例子中,我们创建了一个Promise,它将在1秒钟后完成。如果操作成功,我们调用resolve,否则我们调用reject

        2. promise对象,提供了两个方法:

                ①  ☆ then(回调函数) --- 获取promise成功的状态结果
                      ☆ catch(回调函数) --- 捕获promise失败的状态结果

                ② 基本使用:

        3. 继续探讨then方法:then方法中可以继续return一个promise对象,然后返回值就是这个promise对象。

★ 示例代码:

        4. 继续探讨一下catch方法:一个链式操作中,不管哪一个环节出错,catch方法都可以捕获到,所以,只写一次就行了。 

        5. 并发请求 Promise.all();

                ① 语法:    
                            Promise.all([promise实例1,promise实例2...]).then().catch()。
                ② 执行特点:
                            只有三个promise实例的状态都确定为成功时,Promise.all的最终状态才是成功;只要有一个出现错误,Promise.all()的状态就会变成失败

                ③ 如何避免一个错,Promise.all最终变成错误状态这个问题:
                    给每个请求实例写上单独的catch

        6. Promise.race() 

                ★ 同时执行多个实例,哪个先确定状态,race方法就以哪个状态为主。

        7. Promise.allSettled([实例...]) 

                ★ 并发去执行多个实例,但是,就算有实例失败也会进入到allSettled的成功方法中去(then)


 



 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值