本文由云+社区发表
本篇文章,小编将和大家一起学习异步编程的未来——async/await,它会打破你对上篇文章promise的认知,竟然异步代码还能这么写! 但是别太得意,你需要深入理解promise后,才能更好的的驾驭async/await,因为async/await是基于promise的。
让我们从async关键字开始吧,这个关键字可以放在函数之前,如下所示:
async function f() { return 1; }
在函数之间加上async意味着:函数将返回一个promise,虽然你的代码里没有显示的声明返回一个promise,但是编译器会自动将其转换成一个promise,不信你可以使用promise的then方法试试:
async function f() { return 1; } f().then(alert); // 1
...如果你不放心的话,你可以在代码里明确返回一个promise,输出结果是相同的。
async function f() { return promise.resolve(1); } f().then(alert); // 1
很简单吧,小编之所以说 async/await 是基于promise是没毛病的,async函数返回一个promise,很简单吧,不仅如此,还有一个关键字await,await只能在async中运行。
await的基本语法:
let value=await promise;
该关键字的await的意思就是让js编译器等待promise并返回结果。接下来我们看一段简单的示例:
async function f() { let promise = new promise((resolve, reject) => { settimeout(() => resolve("done!"), 1000) }); let result = await promise; // wait till the promise resolves (*) alert(result); // "done!" } f();
函数执行将会在 let result = await promise 这一行暂停,直到promise返回结果,因此上述代码将会1秒后,在浏览器弹出“done”的提示框。
小编在此强调下:
function f() { let promise = promise.resolve(1); let result = await promise; // syntax error }
一起动手之前,确保你安装了node,npm相关工具,谷歌浏览器,为了预览代码效果,小编使用 npm install http-server -g 命令快速部署了web服务环境,方便我们运行代码。接下来,我们写一个火箭发射场景的小例子(不是真的发射火箭
如对本文有疑问, 点击进行留言回复!!
【奥鹏作业答案库网】大工20春《应用统计》在线作业1【奥鹏作业答案】
网友评论