async和await的使用

匿名 (未验证) 提交于 2019-12-02 23:42:01

async其实是ES7的才有的,其实是异步操作的进化,其实就是封装一个Promise的对象返回

  async function test(){   	 	   return 1111   	 }   console.log(test())  //Promise {<resolved>: 1111} 

async方法在普通的函数前加上"async"关键字即可。执行这个函数,发现并没有返回1111,而是通过Promise.resolved()将1111封装成了一个Promise对象返回。既然是返回的Promise对象,用then方法来处理。

test().then(res=>{   		console.log(res)  //1111 })   

await
在Generator章节中我们熟悉了yield关键字,yield关键字只能使用在Generator函数中,同样,await关键字也不能单独使用,是需要使用在async方法中。 await字面意思是"等待",那它是在等什么呢?它是在等待后面表达式的执行结果。

function testWait(){   		return new Promise((resolve,reject)=>{   			setTimeout(function(){           	console.log("testWait");           	resolve();           }, 1000);   		})   	}  async function test(){   	 	    await testWait()   	 	   console.log("hello");  }   	test()  // 依次打印出  testWait  hello 

是不是理解了await的作用,就是阻塞主函数的执行,直到后面的Promise函数返回结果

await后面不单单只能说Promise对象可以是字符串,布尔值,数值以及普通函数

function testWait(){   			setTimeout(function(){           	console.log("testWait");            }, 1000);   	}   	 async function test(){   	 	    await testWait()   	 	   console.log("hello");   	 }   	test()  // 依次打印出 hello testWait 

通过上面的例子 我们可以得知
1、await后面如果是一个Promise对象,await会阻塞主函数的执行,等待 Promise 对象 resolve,然后得到 resolve 的值,作为 await 表达式的运算结果,然后继续执行主函数接下来的代码。
2、await后面如果是非Promise对象,await等待函数或者直接量的返回,而不是等待其执行结果。

文章来源: https://blog.csdn.net/smlljet/article/details/91958303
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!