ES6中async与await的使用方法

栏目: IT技术 · 发布时间: 4年前

内容简介:是异步编程的一种解决方案。从语法上说,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()

运行结果:

ES6中async与await的使用方法

可以看到第一个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('操作完成')
}

输出结果:

ES6中async与await的使用方法

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

深入浅出 HTTPS:从原理到实战

深入浅出 HTTPS:从原理到实战

虞卫东 / 电子工业出版社 / 2018-6 / 89

本书是一本专业的HTTPS书籍,全面讲解了HTTPS领域的相关知识,内容包括密码学、OpenSSL命令行、证书、TLS协议、HTTPS网站性能优化、HTTPS网站优秀实践、大型网站HTTPS架构设计等。本书有几个特点:(1)内容全面而新颖,基于RFC文档、国外书籍、社区等一手资料,总结了大部分最新的HTTPS知识;(2)由浅入深,从基础到进阶全面掌握HTTPS,读者能够轻松构建一个HTTPS网站,......一起来看看 《深入浅出 HTTPS:从原理到实战》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具