JavaScript(ES6)—Promise对象

    科技2025-05-05  21

    文章目录

    1.promise前言2.promise对象介绍

    1.promise前言

    1.什么是js的同步和异步?

    答:js是单线程的 ====》一条流水线 同步异步的差别在于这条流水线上各个流程的执行顺序不同; 同步:按照主线程中程序排队的顺序,来一个个执行, 前一个执行完才会执行后一个; 异步:主线程中的某些程序任务,可先不执行放在队列中,而去执行下个任务; 如:定时器可放在队列中,等后面执行好后,再回头去执行; 简单理解为:改变程序正常执行顺序的操作就为异步操作;

    2.常见的异步执行有:定时器、ajax请求等;

    异步不是js同时做两件事情,js是单线程的: 只是一个任务未结束,先不执行,而去执行下一个内容; ajax请求可以与js代码同时进行,因为ajax请求不由js引擎负责,而由浏览器模块负责;

    3.为什么要用异步? 因为若在执行中有定时器或ajax请求等任务,若不用异步, 则它执行完需要等一定的时间,才能继续执行后面内容;会卡在页面上,很不友好。

    4.如何实现异步? 回调函数、promise对象、生成器等。。。。。

    (回调函数包括了定时器和ajax请求)

    2.promise对象介绍

    1.promise是什么? promise是一种异步编程模式;(是一种写代码的方式) Promise是一个构造函数,用来生成promise实例 2.promise的作用? promise可以实现异步执行; 有了Promise对象,可以将异步操作以同步的流程表达出来,使代码看起来清晰,直观。 避免了传统回调函数中层层嵌套的回调函数(俗称'回调地狱'); 3.如何使用promise的介绍: promise对象的3个状态 *pending:初始化状态 *fullfilled:成功状态 *rejected:失败状态 4.使用promise基本步骤(2步): (1)创建promise对象p , 传进来一个函数作为参数,函数中也传两个参数 let p=new Promise((resolve,reject)=>{ //初始化实例p状态为pending; //执行异步操作 if(、、、条件、、){ resolve(value); //修改实例p的状态为fullfilled } //value为传值 else{ reject(errMsg); //修改实例p的转态为rejected } //errMsg为传值 }) (2).调用p的then() then中传两个回到函数作为参数 p.then(()=>{ .... //若p执行了resolve(),状态为fullfilled,则执行这里代码 },()=>{ .... //若p执行了reject(),状态为rejected,则执行这里代码 }) 5.解释代码: *创建promise对象p中: 1.构造函数接受一个函数作为参数 2.调用构造函数的到实例p的同时,作为参数的函数会立即执行 3.参数函数接受两个回调函数作为参数resolve和reject 4.在参数函数被执行的过程中, 如果在其内部调用resolve,会将p的状态变成fullfilled, 或者调用reject,会将p的状态变成rejected; *调用promise的then() 1.调用.then可以为实例p注册两种状态回调函数 2.当实例p的状态为fullfilled,会触发第一个函数执行, 3.当实例p的状态为rejected,会触发第二个函数执行; .then用于为promise对象的状态注册回调函数。 它会返回一个promise对象,所以可以进行链式调用也就是.then后面可以继续.then。 在注册的状态回调函数中, 可以通过return语句改变.then返回的promise对象的状态, 以及向后面.then注册的状态回调传递数据;也可以不使用return语句, 那样默认就是将返回的promise对象resolve。 .catch用于注册rejected状态的回调函数,同时该回调也是程序出错的回调, 即如果前面的程序运行过程中出错,也会进入执行该回调函数。 同.then一样,也会返回新的promise对象。
    Processed: 0.011, SQL: 8