js获取异步函数数据的实现

 更新时间:2023年02月24日 08:59:31   作者:元子不圆呀  
本文主要介绍了js获取异步函数数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

异步函数是js中经常会用到的,它的作用无非就是进行一些异步的操作(处理数据)。那么,常见的异步函数有哪些呢,我们一般又是如何获取异步函数的数据呢?今天这篇文章就是围绕这个问题去写的。

异步函数

一般正常情况下,js中的函数是一个一个地按照顺序来完成的。但是异步函数可以改变执行顺序。不过异步任务必须在同步任务执行结束之后,从任务队列中依次取出执行。

常见的异步函数一共有四类:

  • 回调函数
  • promise函数
  • Generator函数
  • async/await函数

1. 回调函数

回调函数一般是作为某个函数的入参,然后在函数内部执行这个回调函数。常见的回调函数有ajax,setTimeouut定时器类,dom事件回调等。

testA(cb) {
cb();
}
setTimeout(() => {
console.log('这是一个回调函数')
}, 100)

缺点: 不能try catch捕获错误, 不能直接return。

promise

promise函数是一种特殊的异步函数,里面包含三种状态:pending、fulfilled(resolved)、rejected。pending是promise的初始状态,resolved表示执行完成且成功的状态,rejected表示执行完成且失败的状态。三个状态不可逆转

Promise本身是同步,then的内容是异步:

let promiseFunc = new Promise((resolve, reject) => {
  // 执行同步代码
  resolve();
}).then((res) => {
  console.log(res)
},(err) => {
  console.log(err);
})

Generator函数

Generator 是一个可以暂停执行(分段执行)的函数,函数名前面要加星号,是一个状态机,封装了多个内部状态。

function *myTest() {
  yield 'I',
  yield 'am',
  yield 'queen'
}

async/await函数

async修饰符加在函数前面,返回一个promise,可以使用then添加回调函数。 await后跟着一个promise或者一个原始类型的值(会自动转成立即 resolved 的 Promise 对象),等待resolve的结果。任何一个await后的Promise发生reject,整个aysnc都会中断,需要try{}catch(err){}来捕获错误。

async function myTest() {
  let val = await new Promise((resolve) => {
    resolve(1)
  });
}

如何获取异步函数的数据

获取异步函数的数据一般分为三种:回调函数,promise和async和await

回调函数

回调函数的这种很简单,就是直接将数据传进回调函数里作为入参即可。

function getData(cb) {
  let val = 'a';
  cb(val);
}

getData((data) => {
  console.log(data);   // 'a'
})

promise

使用promise来处理异步,主要就是利用resolve成功的回调函数,reject失败的回调函数。

let promiseFunc = new Promise((resolve, reject) => {
  let n = Math.random();
  if (n >= 0.7) {
    resolve(n);
  } else {
    reject(`${n}小于0.7`)
  }
});
promiseFunc.then((data) => {
  console.log(data);   // 0.3小于0.7
})

async await

async: 把函数变成异步函数。wait是等待异步函数执行完成。其中await一定要写在async里面

async function myTest() {
  return '我是测试数据'
};
async function getData() {
  let val = await myTest();
  console.log(val);   // 我是测试数据
}

到此这篇关于js获取异步函数数据的实现的文章就介绍到这了,更多相关js获取异步函数 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • webpack动态加载与打包方式

    webpack动态加载与打包方式

    webpack有两种组织模块依赖的方式,同步和异步,这篇文章主要介绍了webpack动态加载与打包方式,本文结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • avalonjs制作响应式瀑布流特效

    avalonjs制作响应式瀑布流特效

    瀑布流主要应用在图片展示页面上。如果有一大批图片需要展示,原始图片尺寸不一致,又希望每张图片都能不剪裁,完整显示,那么就要给图片规定一个宽度,解放它们的高度。利用网页高度不限这个特性,充分利用页面的空间,尽可能的展示多的图片。下面我们就来详细探讨下
    2015-05-05
  • JavaScript编程开发中的五个实用小技巧

    JavaScript编程开发中的五个实用小技巧

    下面的5点说明确实不错,提高性能与可读性,大家可以根据需要选择使用。
    2010-07-07
  • Webpack ECMAScript 模块详解

    Webpack ECMAScript 模块详解

    ECMAScript 模块(ESM)是在 Web 中使用模块的规范, 所有现代浏览器均支持此功能,同时也是在 Web 中编写模块化代码的推荐方式,这篇文章主要介绍了Webpack ECMAScript 模块,需要的朋友可以参考下
    2023-12-12
  • 关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)

    关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios

    本文给大家介绍BootStrap modal 在IOS9中不能弹出的问题以及bootstrap datepicker 在bootstrap modal中不显示问题的解决方案,非常不错,需要的朋友参考下
    2016-12-12
  • JavaScript取得gridview中获取checkbox选中的值

    JavaScript取得gridview中获取checkbox选中的值

    这篇文章主要介绍了 js取得gridview中获取checkbox选中的值,本文给大家分享两段代码片段,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-07-07
  • JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法示例

    JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法示例

    这篇文章主要介绍了JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法,涉及javascript二叉树定义、赋值、遍历、查找等相关操作技巧,需要的朋友可以参考下
    2019-03-03
  • Javascript的字符串方法详解

    Javascript的字符串方法详解

    这篇文章主要介绍了Javascript字符串方法详解的相关资料,在平时工作中经常会用到的,非常不错,需要的朋友可以参考下,希望能够给你带来帮助
    2021-09-09
  • 8个JavaScript条件语句优化小技巧分享

    8个JavaScript条件语句优化小技巧分享

    在日常的开发中,我们经常会编写一些条件语句,过多的 if...else会导致代码难以理解和维护,今天小编来分享几个优化条件语句的小技巧,希望对大家有所帮助
    2022-07-07
  • 有效的捕获JavaScript焦点的方法小结

    有效的捕获JavaScript焦点的方法小结

    阅读本文可理解并解决以下问题 设置元素可获得焦点以监听键盘事件 某个元素明明设置了聚焦却没效果 聚焦时抛出异常的
    2009-10-10

最新评论