JavaScript-Promise介绍-三种状态
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JavaScript-Promise介绍-三种状态,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2271字,纯文字阅读大概需要4分钟。
内容图文
![JavaScript-Promise介绍-三种状态](/upload/InfoBanner/zyjiaocheng/590/1baa39a6c30d49c9a0867992d109c162.jpg)
Promise介绍
- Promise是ES6引入的一个语法
- Promise是异步编程的一种解决方案
什么时候处理异步事件?
- 网络请求
- 我们封装一个网络请求的函数,因为不能立刻拿到结果
- 所以我们会传入另外一个函数,在数据请求成功时,将数据通过传入的而函数回调出去
- 如果只是一个简单地网络请求,那么这种方案不会给我们带来很大的麻烦
- 但是当网络请求太复杂时,就会出现回调地狱
回调地狱
- 我们通过一个url1从服务器加载一个数据data1,data1中包含了下一个请求url2
- 我们需要通过data1取出url2,从服务器加载数据data2,data2中包含了下一个请求url3
- 我们需要通过data2取出url3,从服务器加载数据data3,data3中包含了下一个请求url4
- 发送网络请求url4,获取最终的数据data4
上面代码有什么问题吗?
- 正常情况下没啥问题,正常运行
- 但是不容易维护
- 我们期望一种更加优雅的方式来进行这种异步操作
如何做呢?
- Promise可以以一种非常优雅的方式来解决这个问题
Promise基本使用
回调地狱 - - !
//Promise参数是一个函数
//resolve,reject本身又是函数
new Promise((resolve,reject)=>{
//异步操作
setTimeout(()=>{
console.log('hello world');
setTimeout(()=>{
console.log('hello promise');
setTimeout(()=>{
console.log('hello vue');
},1000)
},1000)
},1000)
})
解决方法: 链式编程
//Promise参数是一个函数
//resolve,reject本身又是函数
new Promise((resolve,reject)=>{
//异步操作,第一次网络请求
setTimeout(()=>{
//第一次请求结果
console.log('hello world');
//再次请求
resolve()
},1000)
}).then(()=>{
//第二次网络请求
setTimeout(()=>{
//第二次请求结果
console.log('hello vue');
return new Promise((resolve,reject)=>{
//返回后再次请求
resolve()
})
},1000)
}).then(()=>{
//第三次网络请求
setTimeout(()=>{
//第三次请求结果
console.log('hello java');
},1000)
})
当执行new Promise() 是,会执行构造函数,保存一些状态信息,执行传入的函数
在执行传入的回调函数是,会传入两个参数,resolve,reject,本身又是函数
new Promise((resolve,reject)=>{
setTimeout(()=>{
//get data
resolve(data)
//失败的时候调用reject
reject('error message')
},1000)
}).then((data)=>{
//data处理代码
}).catch((err)=>{
//error处理代码
})
Promise三种状态
synchronization: 同步
asynchronization: 异步
- padding: 等待状态,比如正在网络请求,定时事件未到
- fulfill: 满足状态,请求到了,当我们主动回调了resolve时,就处于该状态,并且会回调then()
- reject: 拒绝状态,当我们主动回调reject时,就出于该状态,并且会回调cath()
new Promise((resolve,reject)=>{
setTimeout(()=>{
//resolve('hello,vuejs')
reject('err message')
},1000)
}).then(
(data) =>{
console.log(data);
},
(err) => {
console.log(err);
}
)
内容总结
以上是互联网集市为您收集整理的JavaScript-Promise介绍-三种状态全部内容,希望文章能够帮你解决JavaScript-Promise介绍-三种状态所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。