Promise 对象
来源:互联网 发布:pp助手 mac 编辑:程序博客网 时间:2024/05/21 17:42
Promise 对象用于处理异步请求,保存一个异步操作最终完成(或失败)的结果
语法
new Promise( /* executor */ function(resolve, reject) {...});/* 来自谷歌翻译 promise:承诺,约定 resolve:解决,决定,下决心 reject:拒绝,驳回,抵制 */
参数:
promise 构造函数接受一个 executor 函数作为参数,该函数的两个参数分别是 resolve 和 reject,它们是两个函数(executor 函数 在 Promise 构造函数返回新对象之前被调用)。
resolve 函数被调用时,将 promise 对象从 “未完成” 变为 “成功” (即 pending --> fulfilled)
reject 函数被调用时,将 promise 对象从 “未完成” 变为 “失败” (即 pending --> rejected)
描述
promise 对象是一个代理对象(代理一个值),被代理的值在 promise 对象创建时可能是未知的。它允许你为异步操作的成功和失败分别绑定相应的处理方法,使得异步方法可以像同步方法那样返回值,但不是立即返回最终执行结果,而是一个能代表未来出现的结果的 promise 对象。
上面提到过,一个 promise 对象有三个状态:
• pending:初始状态,不是成功或失败状态
• fulfilled:成功完成
• rejected:失败
pending 状态可能触发 fulfilled 状态并传递一个值给相应的状态处理方法,也可能触发 rejected 状态并传递失败信息。当其中任一种情况发生时,promise 对象的 then 方法绑定的处理方法就会被调用。
(then 方法包含两个参数:onfulfilled 和 onrejected,也都是函数。当 promise 对象的状态为 fulfilled 时调用,调用 then 的 onfulfilled 方法;反之,调用 onrejected 方法。所以异步操作的完成和绑定处理方法之间不存在竞争)
then 方法的使用语法:
promise.then(function(value) { // onfulfilled}, function(error) { // 第二个参数是可选的,不一定要提供 // onrejected });
示例:
let myFirstPromise = new Promise(function(resolve, reject){ // 当异步代码执行成功时,调用resolve()方法;失败时,调用reject()方法 // 此处,使用定时器来模拟异步代码,实际编码可能是XHR请求或HTML5的一些API方法 setTimeout(function(){ //resolve('成功!') //代码执行成功,调用resolve()方法 resolve('成功!') }, 2000) }) myFirstPromise.then(function(successMessage){ // successMessage 是上面调用resolve()方法传入的值 // successMessage 参数不一定非要是字符串类型,这里只是举个例子 console.log('Yay!'+successMessage) }) console.log('看看我的位置在哪里?')
- Promise对象
- Promise对象
- Promise对象
- Promise对象
- Promise对象
- Promise 对象
- Promise对象
- Promise对象
- promise对象
- es6 promise对象
- Angularjs promise对象解析
- Angularjs promise对象解析
- ES6 Promise 对象
- ES6 Promise对象
- Angularjs promise对象解析
- promise对象学习
- Angularjs promise对象解析
- Angularjs promise对象解析
- AtomicInteger简介
- Maven讲解之 什么是Maven
- websocket与html5实现批量大文件逐…
- hessian 客户端报警告:Hessi…
- springMVC 几种页面跳转方式
- Promise 对象
- X-Forwarded-For 跟 X-R…
- volatile和synchronized的区别与联…
- RichEdit对ole 对象的相关支持总结
- html5 css 的 水平和垂直居中
- 浏览器文字取消选中效果noselect(…
- stm32 高级定时器
- Jmeter 将 JDBC Request 查询结果作为下一个接口参数方法
- linux磁盘挂载分区以及创建用户指…