内容简介:是异步编程的一种解决方案。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。解决回调函数嵌套过多的情况等待三秒后输出 ‘执行成功’,也就是说当异步操作完成,即执行resolve或者reject之后,才会执行then中的操作所有请求都完成时再执行后续操作
promise的使用方法
promise简介
是异步编程的一种解决方案。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。解决回调函数嵌套过多的情况
const promise =new Promise(function(resolve,reject){
setTimeout(function(){
resolve('执行成功')
},3000)
})
promise.then(res=>{
console.log(res)
}).catch(err=>{
console.log(err)
})
console.log(111)
等待三秒后输出 ‘执行成功’,也就是说当异步操作完成,即执行resolve或者reject之后,才会执行then中的操作
其他用法
promise.all([])
所有请求都完成时再执行后续操作
var p1 = Promise.resolve(3);
var p2 = 1337;
var p3 = new Promise((resolve, reject) => {
setTimeout(resolve, 100, 'foo');
});
Promise.all([p1, p2, p3]).then(values => {
console.log(values); // [3, 1337, "foo"]
});
promise.race([])
那个请求先执行完成就返回那个请求结果,这个可以把一个请求与setTimeout对比,实现请求超时的效果
var p1 = new Promise(function(resolve, reject) {
setTimeout(resolve, 500, "one");
});
var p2 = new Promise(function(resolve, reject) {
setTimeout(resolve, 100, "two");
});
Promise.race([p1, p2]).then(function(value) {
console.log(value); // "two"
// 两个都完成,但 p2 更快
});
async与await
模拟一下经常出现的问题
function getData(){
return new Promise(function(resolve,reject){
setTimeout(function(){ //模拟一下请求
resolve('执行成功')
},3000)
})
}
function main(){
let data=''
getData().then(res=>{
data=res
})
console.log(data)
console.log('操作完成')
setInterval(()=>{
console.log(data)
},1000)
}
main()
运行结果:
可以看到第一个console.log(data)的结果为空,这不难解释,因为main函数内容顺序执行,当getData()的时候异步操作还未完成,所以继续执行下面的操作。当第三秒的时候才执行resolve()并且成功输出data,这也对应了上面promise所说的‘执行resolve或者reject之后,才会执行then中的操作’既然这样事情就简单了,一直等待请求完成不就完事了。
这里更改main函数为
async function main() {
// var data = await getData()//或者
let data
await getData().then((res)=>{
data=res
})
console.log(data)
console.log('操作完成')
}
输出结果:
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- [译] 通过实现 25 个数组方法来理解及高效使用数组方法
- AWK简单使用方法
- python 内置函数使用方法
- 栈和帧指针使用方法
- Golang Label使用方法
- c# – 为什么委托在静态方法中使用时不能引用非静态方法?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
浪潮之巅(第2版)(套装上下册)
吴军 / 人民邮电出版社 / 2013-7 / 80.00元
一个企业的发展与崛起,绝非只是空有领导强人即可达成。任何的决策、同期的商业环境,都在都影响着企业的兴衰。《浪潮之巅》不只是一本历史书,除了讲述科技顶尖企业的发展规律,对于华尔街如何左右科技公司,以及金融风暴对科技产业的冲击,也多有着墨。此外,这本书也着力讲述很多尚在普及或将要发生的,比如微博和云计算,以及对下一代互联网科技产业浪潮的判断和预测。因为在极度商业化的今天,科技的进步和商机是分不开的。 ......一起来看看 《浪潮之巅(第2版)(套装上下册)》 这本书的介绍吧!