JS中的promise对象
来源:互联网 发布:阿里云账号注销解绑 编辑:程序博客网 时间:2024/06/05 18:02
promise对象中文意思可以直接理解为“承诺”
promise是一个用来传递未来即将发生的事件(通常为异步操作)的状态的一个对象,这个对象有很多的API,可以用来进一步处理异步操作响应之后的事情(处理数据)
promise的三个状态:
pending,Resolved,Rejected,分别代表进行中,已完成,已失败
promise特征及优缺点:
promise一旦执行,中途不会被中断,状态一旦发生变化就不会再次发生变化(“承诺”),其他的手段无法对其状态进行更改,它可以用同步的流程表达异步的操作,避免的异步回调层层嵌套的缺点,但是如果不为promise设置回调的话,promise内部会抛出错误,并且不会反应到外部,而且在pending状态是,无法得知进行到那个状态
promise接收一个回调函数,函数的参数为resolve和reject,他们是两个函数,resolve是promise对象从pending变为Resolved时调用,将异步操作的结果作为参数返回,同理,reject是异步操作失败的时候来调用
promise通过.then的形式来支持链式语法
var promise1 = function() { return new Promise(function(resolve, reject) { resolve("promise1执行成功") }); }; var promise2 = function() { return new Promise(function(resolve, reject) { resolve("promise2执行成功") }); }; promise1().then(function(data) { console.log(data); return promise2(); }).then(function (data) { console.log(data); }); promise1执行成功 promise2执行成功
all
Promise.all([promise1(),promise2()]).then(function (data) { console.log(data); }) ["promise1执行成功", "promise2执行成功"]
promise中all,接收一个数组参数,数组中为n个promise,他们的返回值在.then中也是一个数组作为回调的参数
定义一个函数,入参为接口API站点和接口入参,函数返回值为一个promise对象
const postData = function(urls, params) { return new Promise(function(resolve, reject) { $.ajax({ url: urls, type: 'post', data: params, dataType: 'json', cache: false }).then(function(data) { resolve(data); }, function(e) { reject(e); }); })};postData(ymAccountUrl + "/getShopAnnouncementList",{ ymOpenid: 'ozP1gs9Ql5W4HbbTrBDHNo0XcizU'}).then(function (res) { console.log(res); //处理数据}).catch(function (res) { //抛出异常做出处理 console.log(res);})
阅读全文
0 0
- JS中的promise对象
- ES6中的promise对象
- Node,js 中的Promise
- JS中的Promise 使用
- ES6中的Promise对象小结
- JS中的异步与Promise
- JS异步编程(promise、deferred对象)
- 浅谈Promise对象在ReactNative中的使用
- JS中的Promise的then方法
- Promise对象
- Promise对象
- Promise对象
- Promise对象
- Promise对象
- Promise 对象
- Promise对象
- Promise对象
- promise对象
- 巧妙运用DOS命令实现文件合并来隐藏秘密
- 小白Python3爬虫—HTTP(二)
- html之meta标签属性http-equiv和content详解
- PHP7 开启opcache
- http-proxy配置那些事
- JS中的promise对象
- solr管理界面详解。
- 面试题23:从上往下打印二叉树(Leetcode-102)
- python笔记13
- 问题处理: Found element arg0 but could not find matching RPC/Literal part
- 虚拟空间对新闻媒体的真实挑战
- mybatis报错Parameter '**' not found
- Spark性能优化:shuffle调优
- java4.16