function fn(){
  return "aa";
  }
  console.log(fn())
// 如果直接写个函数return一个值,那么打印的肯定就是aa
    async function fn(){
return "aa";
}
console.log(fn())
// 使用async就是在函数前面加一个async,这样打印出来的就是一个promise对象,而不是之前那个具体的值

    async function fn(){
return "aa";
}
console.log(fn()) fn().then(function(data){
console.log(data)  // aa
});
// 如果想要获取fn()的值,就要用then()方法去获取

awiat必须在使用async的情况下才能使用,它的作用是阻断主函数的执行,等待异步执行的结果返回后才会向下继续执行。

    function fn(){
return new Promise((resolve)=>{
setTimeout(()=>{
console.log(1111)
resolve();
},2000);
});
} async function fn1(){
await fn();
setTimeout(()=>{
console.log(2222);
},1000);
}
fn1();
// 执行结果:2秒后打印1111(因为await的阻断作用,它会先执行fn函数),再过1秒打印2222(执行完fn函数后,fn函数要有reslove()才能继续向下执行)。

多个异步同时执行

    function fn(){
return new Promise((resolve)=>{
setTimeout(()=>{
console.log(1111)
resolve();
},3000);
});
}
function fn1(){
return new Promise((resolve)=>{
setTimeout(()=>{
console.log(2222)
resolve()
},1000);
});
}
function fn2(){
return new Promise((resolve)=>{
setTimeout(() => {
console.log(3333)
resolve()
},1000);
});
} async function fn3(){
await fn();
await fn1();
await fn2();
console.log(4444)
}
fn3();
// 执行结果:3秒后打印1111(因为定时器设置为3秒),再过1秒打印2222(受await阻断影响,必须要在fn()执行完后才能执行,同时如果fn()没有返回结果,就是说没有reslove()的话,那么下面的代码将不会执行),
// 再过1秒打印3333和4444(打印4444是瞬间执行,如果fn2()没有reslove(),则不会打印4444)。

async和await的用法的更多相关文章

  1. C#多线程编程(2)-- async,await基本用法

    上一章我简单介绍了异步编程的基本方法,推荐使用的方式是Task.Task是对线程池的封装,并且可以对Task使用async和await关键字.这两个关键字的使用非常简单,那么这两个关键字究竟起什么作用 ...

  2. C# 中的Async 和 Await 的用法详解

    众所周知C#提供Async和Await关键字来实现异步编程.在本文中,我们将共同探讨并介绍什么是Async 和 Await,以及如何在C#中使用Async 和 Await. 同样本文的内容也大多是翻译 ...

  3. async 和 await 的用法示例

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  4. Promise以及async和await的用法

    Promise是一个异步加载的方式,处理时使用new Promise返回一个对象,该对象可以调用then方法,then方法中有两个参数,第一个参数是加载成功时执行,第二个参数是加载失败时执行,then ...

  5. vue中异步函数async和await的用法

    整理的不错,收藏一下 http://blog.sina.com.cn/s/blog_13d06fc1f0102wzfr.html

  6. Thread、ThreadPool、Task、Parallel、Async和Await基本用法、区别以及弊端

    多线程的操作在程序中也是比较常见的,比如开启一个线程执行一些比较耗时的操作(IO操作),而主线程继续执行当前操作,不会造成主线程阻塞.线程又分为前台线程和后台线程,区别是:整个程序必须要运行完前台线程 ...

  7. async和await用法

    原文:async和await用法 要理解async和await的用法,首先要了解Task相关知识,这里不做说明,因为这不是本文的重点. 如果你已经对Task很了解,那么如何使用async和await, ...

  8. async和await用法(Task)

    原文:async和await用法 要理解async和await的用法,首先要了解Task相关知识,这里不做说明,因为这不是本文的重点. 如果你已经对Task很了解,那么如何使用async和await, ...

  9. async和await浅析

    要理解async和await的用法,首先要了解Task相关知识,这里不做说明,因为这不是本文的重点. 如果你已经对Task很了解,那么如何使用async和await,在此主要总结了以下三点: 只有在a ...

随机推荐

  1. webpack-实用的2个配置

    ①:运行npm run dev 后自动打开浏览器    首先找到config里面的index.js文件,然后打开找到autoOpenBrowser属性,把默认的false改为true即可 ②:简写路径 ...

  2. java截取字符串中的最后几个字符

    Java中的String类提供了一个substring(int from, int to)方法用于截取字符串中位置为from到to-1位置的字符. 因为字符串的字符位置是从0开始的,而substrin ...

  3. 一个简单的利用 WebClient 异步下载的示例(五)(完结篇)

    接着上一篇,我们继续来优化.我们的 SkyParallelWebClient 可否支持切换“同步下载模式”和“异步下载模式”呢,好处是大量的代码不用改,只需要调用 skyParallelWebClie ...

  4. 【maven】【IDEA】idea中使用maven编译项目,报错java: 错误: 找不到符号 【2】

    =================================================================================== idea中使用maven编译项目 ...

  5. 百度编辑器UEditor,保存图片的配置问题

    前言: 在使用百度编辑器UEditor的时候,如何将图片保存到服务器,我刚开始以为是要自己写上传文件的方法,后来发现只需要配置一下即可,如果你也正在使用百度富文本编辑器UEditor的话,这篇文章将非 ...

  6. EF操作与Linq写法记录

    项目总结:EF操作与Linq写法记录 1.EF引入 新建一个MVC项目之后,要引用EF框架,可以按照以下步骤进行: 1),在Models中添加项目 2),选择Entity Data Model,并重新 ...

  7. vue服务端打包及自动部署

    上次给CI环境搭建好了,这次写了一个脚本用于服务端打包及部署使用,解决了前端需要频繁打包的问题,即时将代码推到工程库,服务端自动打包作发布,然后测试人员即时测试,尽早发现问题. 发布原理: 我没有通过 ...

  8. 咕咕咕-HLPP算法

    hlpp(欢乐婆婆)算法总结 突然发现咕了好久(X) emm先大概说一下,hlpp是针对网络流算法的一种复杂度更优的算法,基于预流推进(即模拟) 复杂度上界为 n2根号m 且跑不满 (所以学会了它,可 ...

  9. 剑指 Offer——1. 二维数组中的查找

    题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...

  10. Expression表达式目录树动态拼接 反射获取泛型方法

    class TestOne { public String[] arr = { "1", "2", "3" }; public class ...