es6之async函数【学习笔记】

xiaoxiao2021-02-28  51

当await后面是Promise时,执行异步操作,也就是先执行函数外面后面的语句,等到异步操作完成再执行函数内部后面的语句,函数返回Promise对象,最后执行then方法指定的动作,当await后面非Promise对象时,作为同步操作执行,下面是例子: function timeout(ms) { return new Promise((resolve) => { setTimeout(resolve, ms); }); } async function asyncPrint(ms){ await console.log('非promise对象'); await timeout(ms); console.log('async1 complete'); await timeout(ms); console.log('async2 complete'); } asyncPrint(2000).then(()=>{console.log('函数返回');}); console.log('外部语句');

"async函数内部return语句返回的值,会成为then方法回调函数的参数"

"async函数内部抛出错误,会导致返回的 Promise 对象变为reject状态。抛出的错误对象会被catch方法回调函数接收到"

可用await Promise.all()实现异步操作的同时触发

asyn函数的实现原理是返回一个自动遍历Generator函数(作为参数传入)内部状态的Promise。

带引号的内容直接引自原文: http://es6.ruanyifeng.com/#docs/async

转载请注明原文地址: https://www.6miu.com/read-2625805.html

最新回复(0)