async/await处理异步

async函数返回一个Promise对象,可以使用then方法添加回调函数。当函数执行的时候,一旦遇到await就会先返回,等到异步操作完成,再接着执行函数体内后面的语句。

看代码:

指定多少毫秒后输出一个值

function timeout(ms) {
  return new Promise((resolve) => {
    setTimeout(resolve, ms);
  });
}

async function asyncPrint(value, ms) {
  await timeout(ms);
  console.log(value);
}

asyncPrint(‘hello world‘, 50);

 

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

自己试着写了一段代码:

function f1(){
    console.log(‘first step‘);
    return 1;
}
function f2(num){
    return new Promise((resolve,reject)=>{
        setTimeout(()=>{
            resolve(2*num)
        },3000);
    })
}
function f3(){
    console.log(‘third step‘)
}

async function test(){
    let first=await f1();
    let second=await f2(first);
    console.log(second);
    let third=await f3();
    console.log(‘end‘);
}

输出结果如下:

正常情况下,await命令后面是一个 Promise 对象,返回该对象的结果。如果不是 Promise 对象,就直接返回对应的值。

原文地址:https://www.cnblogs.com/shenting/p/10572857.html

时间: 2024-11-10 03:55:47

async/await处理异步的相关文章

ASP.NET WebForm中用async/await实现异步出人意料的简单

1. 在.aspx中添加异步标记 <%@ Page Language="C#" Async="true"%> 2. 在.aspx.cs或者.ascx.cs(用户控件)中添加异步方法 private async Task GetMyPosts() { var posts = await ServiceFactory.BlogPostSevice.GetBlogPostsPagedAsync(); rpPosts.DataSource = posts; rp

Atitit.&#160;Async&#160;await&#160;优缺点&#160;异步编程的原理and实现&#160;java&#160;c#&#160;php

Atitit. Async await 优缺点 异步编程的原理and实现 java c# php 1. async & await的来源1 2. 异步编程history1 2.1. 线程池 2 2.2. 返回值2 2.3. Semaphore 信号量2 2.4. 线程的异常,主线程可以捕获到么2 3. await并不是针对于async的方法,而是针对async方法所返回给我们的Task,2 4. Java里面的task 跟个 await3 5. ---code4 6. async & aw

[.NET] 利用 async &amp; await 进行异步 IO 操作(整理中...)

利用 async & await 进行异步 IO 操作 可以使用异步函数访问文件.使用异步功能,可以调用异步方法,而不使用回调或拆分您在多个方法或 lambda 表达式中的代码. 若要使同步代码异步,则调用异步方法而不是一个同步方法并添加几个关键字到代码中. 您可能认为添加的以下原因 asynchrony 到文件访问调用: Asynchrony 建议于应用程序的响应能力更强.,因为是一个操作的 UI 线程可以执行其他工作. 如果 UI 线程必须执行需要很长时间的代码(例如,超过 50 毫秒),U

[.NET] 利用 async &amp; await 的异步编程

利用 async & await 的异步编程 [博主]反骨仔 [出处]http://www.cnblogs.com/liqingwen/p/5922573.html  目录 异步编程的简介 异步提高响应能力 更容易编写的异步方法 异步方法的控制流 线程 async 和 await 返回类型和参数信息 命名的约定 一.异步编程的简介 通过使用异步编程,你可以避免性能瓶颈并增强应用程序的总体响应能力. Visual Studio 2012 引入了一个简化的方法,异步编程,在 .NET Framewo

async+await处理异步问题

在编写网页的时候我们常常会遇到异步问题,async+await是es6提出的解决异步的方法,下面我们来看看这个方法怎么实现解决异步的, 大家都知道,setTimeout是一个定时器.他是一个异步执行的语句.如: function foo(){ setTimeout(()=>{ console.log(1) },1000) console.log(2) } 答案肯定是2,1 因为setTimeout是一个异步执行语句,所以下面一个会先执行完后再执行异步. 可是,我们有时候会想让异步先执行完了再执行

js async await 终极异步解决方案

既然有了promise 为什么还要有async await ? 当然是promise 也不是完美的异步解决方案,而 async await 的写法看起来更加简单且容易理解. 回顾 Promise Promise 对象用于表示一个异步操作的最终状态(完成或失败),以及其返回的值. Promise 对象是由关键字 new 及其构造函数来创建的.构造函数会,把一个叫做“处理器函数”(executor function)的函数作为它的参数.这个“处理器函数”接受两个函数resolve 和 reject 

[.NET] 使用 async &amp; await 一步步将同步代码转换为异步编程

使用 async & await 一步步将同步代码转换为异步编程 [博主]反骨仔 [出处]http://www.cnblogs.com/liqingwen/p/6079707.html  序 上次,博主通过<利用 async & await 的异步编程>一文介绍了 async & await 的基本用法及异步的控制流和一些其它的东西. 今天,博主打算从创建一个普通的 WPF 应用程序开始,看看如何将它逐步转换成一个异步的解决方案.你知道吗?使用 Visual Studi

走进异步编程的世界 - 开始接触 async/await

[C#] 走进异步编程的世界 - 开始接触 async/await 走进异步编程的世界 - 开始接触 async/await 序 这是学习异步编程的入门篇. 涉及 C# 5.0 引入的 async/await,但在控制台输出示例时经常会采用 C# 6.0 的 $"" 来拼接字符串,相当于string.Format() 方法. 目录 What's 异步? async/await 结构 What’s 异步方法? 一.What's 异步? 启动程序时,系统会在内存中创建一个新的进程.进程是构

异步async/await简单应用与探究

异步函数(async/await)简单应用 .NET Framework4.5提供了针对异步函数语法糖,简化了编写异步函数的复杂度. 下面通过一个简单的示例,介绍.NET Framework4.5对异步函数的支持. 示例代码 class Program { static void Main(string[] args) { EasyAsyncAwait(); Console.ReadLine(); } static async void EasyAsyncAwait() { //① Task<s