每日骚话
这次我们来说一下同步和异步哈,这个Async和Await都是解决异步时候返回顺序不一致的问题的。
简单来说,Async与Await是对Promise的优化,让Promise看起来更美观一些。
话说,我用习惯了Promise,刚学Async和Await那会有点懵逼,今儿恍然大悟,就来CSDN水一下哈,顺便供大家参考。
说明
这里有必要说一下哈,Async和Await还有Promise是在ES6里边的,所以得运行在node里边。
另外,Async和Await一般情况下同时出现,光用一个貌似没效果?甚至会报错……
关于ES6的更多知识,可以去一峰老师的网站看看哈。
Async
返回的是Promise对象
一般为:async myFun( ){ await new Primise(resolve=>{ }) }
Await
a(async) wait = await
得在Async函数里面使用,不然会报错。
await 相当于卡了个点,告诉async函数,这个点执行完了才能继续执行下面的功能。
例子
下面的例子写了一个异步操作,一个直接操作来说明async、await的同步作用
代码
created() {
this.shunxu();
},
methods: {
async shunxu() {
await new Promise((res) => {
setTimeout(() => {
res();
}, 1000);
}).then(() => {
console.log("我的异步操作,一秒后执行");
});
console.log("我是直接打印的");
},
}
效果
可以看见是先等待异步操作执行完了之后,再去执行下面的操作的,这就解决了异步操作时,执行顺序不按编码顺序的问题。
没有await的情况
我们把上面的代码中,new Promise 前面的 await 去掉就行了。
可以看见,去掉await之后,是先直接打印出来,然后再执行异步操作的。
总结
- 一般async与await同步出现
- async返回promise对象
- await出现在async函数内部,单独只用会报错
好哒,那我这次的分享就到这里啦,写的比较简单,苦逼的社畜难得抽出时间来写东西,留下了后悔的泪水……
最后,共勉哈~