首页IT科技promise对象的用法(Promise对象的使用)

promise对象的用法(Promise对象的使用)

时间2025-08-04 18:36:38分类IT科技浏览4900
导读:一、什么是Promise Promise 是异步编程的一种解决方案,比传统的解决方案(回调函数和事件)更合理和更强大。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。...

一            、什么是Promise

Promise 是异步编程的一种解决方案            ,比传统的解决方案(回调函数和事件)更合理和更强大            。从语法上说                  ,Promise 是一个对象      ,从它可以获取异步操作的消息                  。Promise 提供统一的 API            ,各种异步操作都可以用同样的方法进行处理      。

二                  、Promise 的特点

1      、对象的状态不受外界影响      。 Promise对象代表一个异步操作                  ,有三种状态:pending(进行中)            、fulfilled(已成功)和rejected(已失败)                  。只有异步操作的结果      ,可以决定当前是哪一种状态      ,任何其他操作都无法改变这个状态            。

2                  、一旦状态改变                  ,就不会再变            ,任何时候都可以得到这个结果      。 Promise对象的状态改变      ,只有两种可能:从pending变为fulfilled和从pending变为rejected                  。 只要这两种情况发生                  ,状态就凝固了            ,不会再变了,会一直保持这个结果                  ,这时就称为 resolved(已定型)            。如果改变已经发生了                  ,你再对Promise对象添加回调函数,也会立即得到这个结果。这与事件(Event)完全不同            ,事件的特点是                  ,如果你错过了它      ,再去监听            ,是得不到结果的                  。

三      、then 方法

1      、它的作用是为 Promise 实例添加状态改变时的回调函数                  。前面说过                  ,then方法的第一个参数是fulfilled(已成功)状态的回调函数      ,第二个参数是rejected(已失败)状态的回调函数      ,它们都是可选的。

例:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> </body> <script> //设置口袋的钱金额 //var money = 100 var money = 90 //购物方法 function goShop(m) { return new Promise((resolve, reject) => { if (m >= 100) { resolve("购物愉快") } else { reject("钱不够了") } }); } //进行购物 goShop(money).then(msg => console.log(msg), err => console.log(err)) </script> </html>

运行结果:

2                  、then方法返回的是一个 新的Promise实例(注意                  ,不是原来那个Promise实例)            。因此可以采用链式写法            ,即then方法后面再调用另一个then方法                  。

例:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> </body> <script> //设置口袋的钱金额 var money = 100 //购物方法 function goShop(m) { return new Promise((resolve, reject) => { if (m >= 100) { resolve("购物愉快") } else { reject("钱不够了") } }); } //进行购物 goShop(money).then(msg => 恭喜你! + msg).then(msg => alert(msg)) </script> </html>

运行结果:

四            、catch()方法

1      、如果异步操作抛出错误      ,状态就会变为rejected(已失败)                  ,就会调用catch()方法指定的回调函数            ,处理这个错误      。

例:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> </body> <script> //设置口袋的钱金额 var money = 90 //购物方法 function goShop(m) { return new Promise((resolve, reject) => { if (m >= 100) { resolve("购物愉快") } else { throw new Error(钱不够了); } }); } //进行购物 goShop(money).then(msg => alert(恭喜你! + msg)).catch(err => alert(对不起! + err.message)) </script> </html>

运行结果:

2                  、then()方法指定的回调函数,如果运行中抛出错误                  ,也会被catch()方法捕获            。

例:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> </body> <script> //设置口袋的钱金额 var money = 100 //购物方法 function goShop(m) { return new Promise((resolve, reject) => { resolve("消费了:"+m+"元") }); } //进行购物 goShop(money) .then(msg => { console.log(msg) throw new Error(请继续充值); }) .catch(err => alert(对不起! + err.message)) </script> </html>

运行结果:

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
关键词搜索引擎工具的应用与优势分析(关键词搜索引擎工具的应用与优势)