何为异步编程

说到异步,不得不提到同步执行,所谓的同步可以理解为顺序执行,就是同一时间有两个任务的话,前一个任务执行完才能执行下一个任务,如下:

function fun1() {console.log('我是第1个执行')
}
function fun2() {console.log('我是第2个执行')
}
fun1()
fun2()

执行结果即以函数的调用顺序为准,即先执行fun1(),再执行fun2()。
异步的话就正好相反,只要符合某个条件,就可以先执行,最常见的就是前后端的数据交互,下面以js的定时函数为例:

function fun1() {setTimeout(()=>{console.log('我是第1个执行')},1000)
}
function fun2() {setTimeout(()=>{console.log('我是第2个执行')},500)
}
fun1()
fun2()

由于定时函数的时间限制,所以最后的结果是先打印fun2(),后打印fun1()

如何通过异步方式获取数据

1、 回调函数

let target = 'Hello World'
// 方案1、回调函数
function getData(fn){setTimeout(() =>{fn(target)},1000)
}
// getData 的参数为一个回调函数,d是一个形参,在定时器中执行时会被赋予target 这个实参
getData((d)=>{console.log(d)
})

2、 promise

let target = 'Hello World'
// 方案2、用promise对象获取数据
function getData(){return new Promise((resolve) =>{setTimeout(() => {resolve(target)}, 500);})
}
//getData 的返回值是一个new proMise对象,即p是一个promise 对象
let p = getData();//将getData函数的返回值赋给p
p.then(data => console.log(data))

3、async 函数

function getData(){return new Promise((resolve) =>{setTimeout(() => {resolve(target)}, 500);})
}async function fun(){let data1 = await getData();console.log(data1);let data2 = await getData();console.log(data2);let data3 = await getData();console.log(data3);
}
fun();

JS异步获取数据的几个方法相关推荐

  1. 揭秘 React 异步获取数据的进化历程

    点击上方 前端瓶子君,关注公众号 回复算法,加入前端编程面试算法每日一题群 本篇文章,以模拟从『Hacker News API[1]』获取热门文章为例,通过一步步地代码优化和封装,阐述 React 异 ...

  2. 前端js调用后端API获取数据的三种方法(2022.7.25)

    前端js调用后台API获取数据的三种方法(2022.7.25) 前言 需求分析 一个Get实例 浏览器请求 SoapUI软件请求 一个Post实例 浏览器请求 SoapUI软件请求 1.Http简介( ...

  3. node 创建静态web服务器(下)(处理异步获取数据的两种方式)

    接上一章. 上一章我们说创建的静态web服务器只能识别html,css,js文件,功能较为单一,且图片格式为text/html,这是不合理的. 本章,我们将解决该问题. 这里,我们先准备好一个json ...

  4. JS快速获取图片宽高的方法

    JS快速获取图片宽高的方法 快速获取图片的宽高其实是为了预先做好排版样式布局做准备,通过快速获取图片宽高的方法比onload方法要节省很多时间,甚至一分钟以上都有可能,并且这种方法适用主流浏览器包括I ...

  5. ajax异步获取数据后动态向表格中添加数据的页面

    因为某些原因,项目中突然需要做自己做个ajax异步获取数据后动态向表格中添加数据的页面,网上找了半天都没有 看到现成的,决定自己写个例子 1.HTML页面 [html] view plaincopyp ...

  6. ajax异步获取数据后动态向表格中添加数据(行)

    因为某些原因,项目中突然需要做自己做个ajax异步获取数据后动态向表格中添加数据的页面,网上找了半天都没有 看到现成的,决定自己写个例子 1.HTML页面 [html] view plaincopyp ...

  7. Vue:echarts画图实战,异步获取数据在Vue上使用echarts进行画图

    Vue:echarts画图实战,异步获取数据在Vue上使用echarts进行画图 一.效果图 二.资源 主题编辑器 ECharts 教程 实现代码------想要进行实战的同学可以研究以下代码,下面的 ...

  8. vue表格刷新数据_Vue.js的列表数据的同步更新方法

    这次给大家带来Vue.js的列表数据的同步更新方法,Vue.js列表数据同步更新方法的注意事项有哪些,下面就是实战案例,一起来看一下. 数组的 push(),pop(),shift(),unshift ...

  9. 计算机读取数据的接囗教程,八爪鱼采集怎样获取数据API链接 八爪鱼采集获取数据API链接的方法...

    今天给大家带来八爪鱼采集怎样获取数据API链接,八爪鱼采集获取数据API链接的方法,让您轻松解决问题.八爪鱼采集如何获取数据API链接 具体方法如下:1 java.cs.php示例代码点击下载 这个教 ...

最新文章

  1. 为增进理解力而奋斗终身
  2. git常用命令,分支操作,子模块
  3. springboot使用PageHelper实现分页
  4. Kali Linux 无线渗透测试入门指南 翻译完成!
  5. 什么是冬至?冬至的由来?
  6. Optimizate objective function in matrix
  7. 海南凤凰机场智能通信解决方案
  8. html转pdf分页 css
  9. 编程必备基础知识-计算机组成原理-概述篇
  10. 每日一句英语翻译练习(2020.4)
  11. O1,O2,O3优化了什么,链接做了什么;静态链接-static
  12. mezzanine 历险记
  13. CVPR 2022 | 看谷歌的单张图片人体重建效果如何?
  14. 全面理解Gradle - 定义Task
  15. Python如何删除多余的空格与空行(有代码)
  16. cesium--画一个椭球
  17. Kerberos身份验证流程
  18. 蒙特卡洛树搜索方法介绍——算力聚焦方法(一) Dyna-Q+
  19. 【笔记】Java中使用变量的规则(使用变量,遵循就近原则)、成员变量和局部变量的区别
  20. SILK : SILK_RTP_PayloadFormat 中文翻译(一)

热门文章

  1. LIN总线入门到精通第一讲
  2. 用SSH压缩和解压zip,gz,.tar.gz等格式的正确方法
  3. MySQL之MyIsam索引
  4. 一个女孩为了赌气让男孩去医院买血。
  5. 在线ps怎么快速处理图片?电脑怎么批量图片处理?
  6. web网页设计实例作业~~主题是花盆售卖网页(HTML+CSS+JavaScript)
  7. 得到影视源码分享(有演示),带一键采集,亲测能用,适合懒人做电影站!
  8. php判断是否safari,js代码判断浏览器种类IE、FF、Opera、Safari、chrome及版本_javascript技巧...
  9. C语言case关键字后面的值有什么要求?
  10. windows环境下进入docker虚拟机的方式