常见的异步编程的几种方法

这篇具有很好参考价值的文章主要介绍了常见的异步编程的几种方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  1. 回调函数
  2. Promise
  3. Rxjs

1、回调函数

 1  /* 利用回调函数执行异步操作 */
 2   getCallBackData(callback) {  // 把函数作为参数传递进去
 3     setTimeout(() => {
 4       let data = 'this is callback data';
 5       callback(data);  // 将异步数据作为参数传递给函数
 6     }, 1000)
 7   }
 8 
 9 
10 /* 函数的调用----获取 callback data */
11   this.getCallBackData((result) => {
12     console.log(result);  // 回调函数只能在传入函数(参数)中处理
13   });  

 

2、Promise

 1 /* Promise */
 2 getPromiseData() {
 3     return new Promise((resolve, reject) => {  
 4       setTimeout(() => {
 5         const data = 'this is Promise data';
 6         resolve(data); // 将异步数据及相关操作封装在 Promise对象中,通过resolve返回
 7       }, 3000)
 8     })
 9   }
10 
11 
12 /*  获取 promise data */
13 const promiseData = this.getPromiseData()
14 promiseData.then(x => {
15     console.log(x);
16   })

 

3、Rxjs

 1 /* rxjs */
 2 getRxjsData() {
 3   return new Observable(observer => {
 4     setTimeout(() => {
 5       const data = 'this is rxjs data';
 6       observer.next(data);  // 将异步数据及相关操作封装在 Observable 中,通过next返回
 7     }, 3000);
 8   })
 9 }
10 
11 
12  /* 获取 rxjs data */ 
13 const rxjsData = this.request.getRxjsData();
14 const stream = rxjsData.subscribe(x => { // 将 subscribe 返回的subscription赋值给一个变量,取消订阅要通过返回的subscription来取消
15     console.log(x);
16   });
注意:不管是通过 Promise 的 resolve返回,还是通过 getRxjsData 的 observer 返回,返回的时间用户都不能马上得到,必须分别使用 then 和 subscribe 来订阅
 
4、Rxjs取消订阅
1 /* 取消订阅 3s后返回rxjs data,但是刚过1s,我想取消,不想订阅了 */
2 setTimeout(() => {
3    stream.unsubscribe();     // promise创建之后动作无法撤回,而Observable可以撤回发出的动作
4  }, 1000)

 

5、rxjs订阅后多次执行

 1  getMutipleRxjsData() {
 2     return new Observable(observer => {
 3       let count = 0;
 4       setInterval(() => {
 5         observer.next(count++);
 6         // 对于 promise来说,最终结果要么是resolve或者reject,而且都只能触发一次,如果在同一个promise对象上多次调用resolve方法,则会抛出异常
 7         // 而Observable不一样,它可以通过next方法源源不断的触发下一个值
 8       }, 1000);
 9     })
10   }
11 
12 
13 /* rxjs 多次执行 */ 
14 this.getMutipleRxjsData().subscribe(x => {
15       console.log(x);
16     })

 文章来源地址https://www.toymoban.com/news/detail-807336.html

到了这里,关于常见的异步编程的几种方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 寻找网站后台的几种常见的方法

    (注:本教程仅供学习交流使用,不可用于一切未授权的网络攻击和违法行为!) 当我们进入一个网站时,如何对其后台进行查找、从而进一步渗透?今天给大家介绍几种常见的方法: 查看网站图片中的属性 我们可以随机点击一些图片的属性,看看它的路径能否加以利用

    2024年01月16日
    浏览(38)
  • python操作PDF的几种常见方法

    大家好,有关python操作pdf的方法,各种语言处理起来都比较麻烦,而且各种第三方库的应用场景都不同。下面说明一下python如何通过第三方库如何处理pdf文件。 1.1、pdfplumber提取文本内容 安装pdfplumber pdfplumber提取PDF中文字代码思路如下 利用pdfplumber打开一个 PDF 文件 获取指定

    2024年02月03日
    浏览(44)
  • 配置本地路由的几种常见方法介绍

    本文主要和大家分享 如何配置本地路由的几种常见方法 ,希望给大家提供多一些网络基础知识! 为了有效提高工作效率,不少规模较大的单位把局域网按照一定的规律分成了许多不同用途的子网,要想让不同子网之间相互能够通信,就必须通过路由功能来实现;因此配置好

    2024年02月05日
    浏览(45)
  • 限制 SLS告警通知时段的几种常见方法

    在对系统进行监控告警的过程中,有时候并非在任何时候都要接收告警通知,例如以下场景: 计划内变更触发的已知告警可以无需通知 非工作时间不接收不严重的告警 夜里不接收电话告警 等等 本文会介绍几种常见的限制告警通知时段的方法,以及它们各自所适用的场景。

    2024年02月02日
    浏览(43)
  • 求最大公约数的几种常见的方法 【详解】

    目录 一、关于公约数 二、计算最大公约数的方法  1. 辗转相除法(欧几里得算法) 2. 更相减损法(辗转相减法) 3. 分解质因数法 4. 穷举法  5. 递归法 6. 短除法 三、总结 首先 ,先介绍一下公约数: 公约数(公因数),一个能被若干个整数同时整除的的整数,公约数中最大

    2024年02月08日
    浏览(60)
  • 如何解决电脑无声问题:排除故障的几种常见方法

    大家好,今天我们来讨论一下处理电脑没有声音的故障。当你突然发现电脑静音无声时,需要逐步排除可能的问题,但总体而言,声音故障是相对容易解决的。接下来,我们将介绍一些排除电脑无声问题的方法。 第一步:检查是否处于静音或音响线松动状态。 检查是否处于

    2024年02月14日
    浏览(38)
  • 设置路由器刷新堵塞网络的几种常见方法介绍

    一般网络堵塞是造成网络变卡的原因,一般我们可以先断开网络再次的链接就OK了,那么再使用路由器上实现这个效果呢?下面分别介绍一种方法,保准你可以迅速的搞定。 禁用本地连接再重新启用的这种方式最常用的。具体的做法是先在桌面的右下角点击网络链接,然后就

    2024年02月06日
    浏览(41)
  • 【Git】Github 上传文件常见的几种错误及尝试的解决方法

    具体的错误类型为: 收到的错误信息表示我们正在尝试推送到GitHub上的一个分支,而该分支包含我们本地没有的提交记录。要解决这个问题,我们需要在再次推送之前将远程更改合并到你的本地分支中。 以下是我们可以执行的操作: 确保你已经提交了所有本地的更改。你可

    2024年02月13日
    浏览(43)
  • 深入理解 Promise、async、回调函数和 AJAX

    简介:本篇博客将介绍 Promise、async、回调函数和 AJAX,这些是在 JavaScript 中处理异步编程和数据交换的关键技术。我们将通过代码示例和解释来详细说明它们的基本用法和优势。 下面是一个简单的示例,展示 Promise 的基本用法: 在创建 Promise 对象时,传递的参数是一个执行

    2024年02月10日
    浏览(45)
  • Linux使用make命令时常见的几种错误及其解决方法(Ubuntu适用)

    这是我在安装busybox时使用make menuconfig命令时所出现过的错误及我的解决方法,仅供参考: 1.出现Command \\\'make\\\' not found 解决方法: sudo apt-get install ubuntu-make sudo apt-get install make                 //我两条都输了一遍才解决问题 2.无法打开锁文件 解决方法: su           //然后输

    2024年02月04日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包