JavaScript Promise-2

简介: JavaScript Promise-2
  1. 学习异步时,对函数里面的 resolve() 不太理解,后来上网查了查,知道了他的作用:
    Promise 对象代表一个异步操作,有三种状态:Pending(进行中)、Resolved(已完成,又称 Fulfilled)和 Rejected(已失败)。
    通过回调里的 resolve(data) 将这个 promise 标记为 resolverd,然后进行下一步 then((data)=>{//do something}),resolve 里的参数就是你要传入 then 的数据。

      龙
     272***8261@qq.com
     参考地址
    3年前 (2021-05-11)
  2.   dev_Tim  503***610@qq.com223关键点:
  • 1、Promise 对象代表一个异步操作,有三种状态:pending(进行中)、fulfilled(已成功)、rejected(已失败)
  • 2、Promise构造函数接收一个函数作为参数,该函数的两个参数分别是 resolve 和 reject
  • 3、一个promise对象只能改变一次状态,成功或者失败后都会返回结果数据。
  • 4、then 方法可以接收两个回调函数作为参数,第一个回调函数是Promise对象的状态改变为 resoved 是调用,第二个回调函数是 Promise 对象的状态变为 rejected 时调用。其中第二个参数可以省略。
  • 5、catch 方法,该方法相当于最近的 then 方法的第二个参数,指向 reject 的回调函数,另一个作用是,在执行resolve回调函数时,如果出错,抛出异常,不会停止运行,而是进入catch 方法中。
  1. 注意:catch 只捕获最近的 then 的回调函数,前面的then的执行不成功的结果,有后面 then 的 reject 回调函数执行,如果没有后续 then 回调函数执行,则会被 catch 捕获执行;
    自己查资料后,根据自己理解详细写了一个例子,如果写得不对,欢迎指正:

var promise =new Promise(function(resolve,reject){

   //To Do 要异步执行的事情,这个异步执行的事情有可能成功执行完毕,那么Promise将是fulfilled状态,如果执行失败则是rejected;

   //下面测试代码,人为设置为rejected状态;

   reject("将当前构建的Promise对象的状态由pending(进行中)设置为rejected(已拒绝)"); //当然此处也可以设置为fulfilled(已完成)状态

})


promise.then(//调用第一个then()

   success=>{

       console.log("异步执行成功,状态为:fulfilled,成功后返回的结果是:"+success);

       return(" 当前 success ");

   },

   error=>{

       console.log("异步执行失败,状态为rejected,失败后返回的结果是:"+error);

       return(" 当前 error ");

   }

).then(

   //调用第二个then() 因为调用第一个then()方法返回的是一个新的promise对象,此对象的状态由上面的success或者error两个回调函数的执行情况决定的:

   //如果回调函数能正常执行完毕,则新的promise对象的状态为fulfilled,下面执行success2,如果回调函数无法正常执行,则promise状态为rejected;下面执行error2

   success2=>{

       console.log("第一个then的回调函数执行成功 成功返回结果:"+success2);

       throw(" 当前 success2 ");//自定义异常抛出

   },

   error2=>{

       console.log("第一个then的回调函数执行失败 失败返回结果:"+error2);

       return(" 当前 error2 ");

   }

).catch(err=>{

   //当success2或者error2执行报错时,catch会捕获异常;

   console.log("捕获异常:"+err);

});


//上述代码,打印如下:

//异步执行失败,状态为rejected,失败后返回的结果是:将当前构建的Promise对象的状态由pending(进行中)设置为rejected(已拒绝)

//第一个then的回调函数执行成功 成功返回结果: 当前 error

//捕获异常: 当前 success2

目录
相关文章
|
1天前
|
前端开发 JavaScript
ES6新标准下JS异步编程Promise解读
ES6新标准下JS异步编程Promise解读
12 3
|
2天前
|
Web App开发 前端开发 JavaScript
JavaScript Promise-1
JavaScript Promise
8 3
|
13天前
|
JavaScript 前端开发
JS中Promise的类式实现写法
JS中Promise的类式实现写法
|
1月前
|
前端开发 JavaScript API
JavaScript 中的 Promise
Promise 是 JavaScript 中用于处理异步操作的一种模式,它提供了一种比传统的回调函数更清晰、更易于管理和控制的方式来处理异步流程。
|
1月前
|
设计模式 前端开发 JavaScript
javascript 异常问题之Promise的未处理异常如何捕获
javascript 异常问题之Promise的未处理异常如何捕获
|
1月前
|
监控 前端开发 JavaScript
javascript 异常问题之在JavaScript中,Promise的异常如何处理
javascript 异常问题之在JavaScript中,Promise的异常如何处理
|
1月前
|
前端开发 JavaScript
javascript 异常问题之Promise异常如何捕获
javascript 异常问题之Promise异常如何捕获
|
1月前
|
前端开发 JavaScript
JavaScript异步编程4——Promise错误处理
JavaScript异步编程4——Promise错误处理
38 0
|
1月前
|
存储 JSON 前端开发
JavaScript异步编程3——Promise的链式使用
JavaScript异步编程3——Promise的链式使用
21 0
|
1月前
|
前端开发 JavaScript API
JavaScript异步编程2——结合XMLHttpRequest使用Promise
JavaScript异步编程2——结合XMLHttpRequest使用Promise
14 0