21、同步与异步(三种方法)

简介: 21、同步与异步(三种方法)

1、同步:按顺序一条一条数据执行

    // 1、同步:按顺序一条一条数据执行
    console.log('第1条数据');
    console.log('第2条数据');
    console.log('第3条数据');
    console.log('第4条数据');
    console.log('第5条数据');
    // 输出结果:1、2、3、4、5

2、异步:前一条数据不影响后一条数据执行

    // 2、异步:前一条数据不影响后一条数据执行
    setTimeout(() => { console.log('第1条数据') }, 3000);
    setTimeout(() => { console.log('第2条数据') }, 1000);
    setTimeout(() => { console.log('第3条数据') }, 3000);
    setTimeout(() => { console.log('第4条数据') }, 2000);
    setTimeout(() => { console.log('第5条数据') }, 3000);
    // 输出结果:2、4、1、3、5

3、异步获取数据的方法(3种)


  1. 回调函数
  2. ES6的Promose内置对象
  3. async函数


4、异步获取数据的方法(回调函数)

    // 1、回调函数
    var target = 'Hello world!';
    function getDate(fn) {
      setTimeout(() => {
        fn(target);
      }, 500)
    }
    getDate((target) => {
      console.log(target);    // 输出结果:Hello world!
    })


5、异步获取数据的方法(promise内置对象)

    // 2、ES6(promise)内置对象,专业处理异步
    var target = 'Hello world!';
    var result = new Promise((resolve) => {
      setTimeout(() => {
        resolve(target);
      }, 500)
    })
    result.then((target) => {
      console.log(target);    // 输出结果:Hello world!
    })


6、异步获取数据的方法(async函数)

    // 3、async函数解决异步问题
    function getDate1() {
      return new Promise((resolve) => {
        setTimeout(() => {
          resolve(target);
        }, 500)
      })
    }
    async function fun() {
      // await:等待
      let target1 = await getDate1();
      console.log(target1);
      let target2 = await getDate1();
      console.log(target2);
      let target3 = await getDate1();
      console.log(target3);
    }
    fun();


相关文章
|
前端开发
异步转同步的几种方法
在循环等待中,我们可以使用一个变量来指示异步操作是否已完成。然后,我们可以在循环中检查该变量,如果它指示异步操作已完成,则退出循环。
810 0
|
测试技术
CRC-16 MODBUS原理,附实测可用源码
之前做串口解析,CRC校验一直用和校验,就是吧各个位加在一起,新来一个串口协议,是CRC-16 MODBUS的形式校验,不会呀,从网上找了找资源,没有找到源码,都要下载,分享出来。
CRC-16 MODBUS原理,附实测可用源码
|
JavaScript
Vue怎么通过路由实现页面的局部跳转
Vue怎么通过路由实现页面的局部跳转
479 0
|
机器学习/深度学习 Linux vr&ar
ARIMA差分自回归移动平均模型
ARIMA是**差分自回归移动平均模型**的引文缩写,其中AR表示的是自回归模型,MA表示的是移动平均模型,I表示的是差分。一般写成ARIMA(p,d,q),p是自回归阶数,q是移动平均阶数,d表示差分的次数。
1967 0
ARIMA差分自回归移动平均模型
|
物联网 数据管理 Apache
拥抱IoT浪潮,Apache IoTDB如何成为你的智能数据守护者?解锁物联网新纪元的数据管理秘籍!
【8月更文挑战第22天】随着物联网技术的发展,数据量激增对数据库提出新挑战。Apache IoTDB凭借其面向时间序列数据的设计,在IoT领域脱颖而出。相较于传统数据库,IoTDB采用树形数据模型高效管理实时数据,具备轻量级结构与高并发能力,并集成Hadoop/Spark支持复杂分析。在智能城市等场景下,IoTDB能处理如交通流量等数据,为决策提供支持。IoTDB还提供InfluxDB协议适配器简化迁移过程,并支持细致的权限管理确保数据安全。综上所述,IoTDB在IoT数据管理中展现出巨大潜力与竞争力。
448 1
|
SQL 关系型数据库 MySQL
分享一个 .Net core Console 项目使用 SqlSugar 的详细例子
分享一个 .Net core Console 项目使用 SqlSugar 的详细例子
784 0
|
JavaScript 前端开发 开发者
前端框架对比:Vue.js与Angular的优劣分析与选择建议
【10月更文挑战第27天】在前端开发领域,Vue.js和Angular是两个备受瞩目的框架。本文对比了两者的优劣,Vue.js以轻量级和易上手著称,适合快速开发小型到中型项目;Angular则由Google支持,功能全面,适合大型企业级应用。选择时需考虑项目需求、团队熟悉度和长期维护等因素。
444 1
|
机器学习/深度学习 人工智能 自然语言处理
【人工智能】自然语言处理(NLP)的突破,关注NLP在机器翻译、情感分析、聊天机器人等方面的最新研究成果和应用案例。
自然语言处理(NLP)作为人工智能的一个重要分支,近年来取得了显著的突破,特别在机器翻译、情感分析、聊天机器人等领域取得了显著的研究成果和广泛的应用。以下是对这些领域最新研究成果和应用案例的概述,并附带相应的代码实例。
997 1
|
Java 应用服务中间件 Maven
从零到英雄:一步步构建你的首个 JSF 应用程序,揭开 JavaServer Faces 的神秘面纱
【8月更文挑战第31天】JavaServer Faces (JSF) 是一种强大的 Java EE 标准,用于构建企业级 Web 应用。它提供了丰富的组件库和声明式页面描述语言 Facelets,便于开发者快速开发功能完善且易于维护的 Web 应用。本文将指导你从零开始构建一个简单的 JSF 应用,包括环境搭建、依赖配置、Managed Bean 编写及 Facelets 页面设计。
305 0
|
设计模式 安全 编译器
【C++ 异常】C++异常处理:掌握高效、健壮代码的秘密武器
【C++ 异常】C++异常处理:掌握高效、健壮代码的秘密武器
371 1