JavaScript封装异步函数 —— 【异步编程】 —— 如何获取一个函数中异步操作的结果?
我们在写项目的时候有没有遇到这样的一个情况:一个函数里,嵌套着另一个异步函数,那如何在外面获取这个异步函数的结果呢?(return值)
就比如这样一个例子:
function fn() {setTimeout(function(){let data = 222},2000)
}
我们如何获取定时器中data的值呢?
方法一 传入回调函数
function fn(callback) {setTimeout(function(){let data = 222callback(data)},2000)
}fn(function(data){console.log(data) // 222
})
我们巧妙地在fn里传入一个回调函数,在定时器函数中调用这个回调函数,并把定时器函数中的结果通过函数传参的形式带出来,这样我们就可以通过fn的回调获取到结果了!
其实,这样的操作也被称为 —— 封装异步API(封装异步函数)
我们通过fn函数,将定时器异步函数进行封装。
方法二 Promise
function fn() {return new Promise(function (resolve, reject) {setTimeout(function () {let data = 222resolve(data)}, 2000)})
}fn().then(function(data) {console.log(data)
})
用Promise将异步函数进行包裹,在调用fn时会返回一个Promise实例,调用Promise实例的then函数,我们就可以拿到成功的回调值。
JavaScript封装异步函数 —— 【异步编程】 —— 如何获取一个函数中异步操作的结果?相关推荐
- C语言—字符指针作函数参数 按如下函数原型编程实现字符串连接函数strcat()的功能。void MyStrcat(char *dstStr, char *srcStr);
按如下函数原型编程实现字符串连接函数strcat()的功能. void MyStrcat(char *dstStr, char *srcStr); 输入提示信息: "Input a str ...
- JavaScript 习题:如何获取一个字符串中的数字字符,并按数组形式输出,如 bdjhs113fdfd456fnsd789djnskd 输出 [113,456,789]
[题目来源:Duing] 如何获取一个字符串中的数字字符,并按数组形式输出,如 bdjhs113fdfd456fnsd789djnskd 输出 [113,456,789]. [解析来源:叁贰壹] 我自 ...
- python单稳态触发_使用 方法可以获取一个列表中最大元素的值。_学小易找答案...
[填空题]若在列表的最后添加新元素,则可以直接使用列表的 方法. [填空题]将一个线程的 属性设置为True,则该线程为守护线程. [填空题]是在调用函数时函数名后面的一对小括号中给出的参数列表. [ ...
- React Native之函数作为参数传递给另外一个函数去调用
1 用法 我们一般喜欢把js里面的函数作为参数传递给另外一个函数,然后再调用这个函数,有点像C语言里面的函数指针 2 代码测试 写了一个函数,2个参数分别是函数,然后更具数据决定调用哪个函数 /*** ...
- mysql获取下一条自增的id_mysql获取一个表中的下一个自增(id)值的方法
mysql获取一个表中的下一个自增(id)值的方法 MySQL: Get next AUTO_INCREMENT value from/for table Note to self: To get t ...
- FileDemo4~5 获取一个目录中的所有子项/部分子项
FileDemo4 获取一个目录中的所有子项 /** * 获取一个目录中的所有子项 * 方法: File[] listFiles() * 重载方法: File[] listFi ...
- Go语言函数作为 值 赋值给一个变量 和 函数作为参数传入另一个函数的写法你不想了解咩
1.在Go语言中,函数也是可以作为值赋值给另一个变量的,代码如下: package mainimport "fmt"func function1() {fmt.Println(&q ...
- python等待执行完毕 再继续执行_如何等待一个函数内部异步执行完毕再执行另外一个函数?...
问题描述 有两个函数f1和f2,其中f1中有异步操作,执行完f1接着执行f2,因为f1内部有异步操作,所以会先执行完f2,再执行f1里的异步,如何等待f1异步执行完再执行f2. 备注:执行方式为f1( ...
- python中求差的函数_Python编程基础11:函数和模块
一.函数和模块概述 (一)函数概述 函数可以看成是语句的集合,通过函数调用来执行其包含的语句.函数可以返回一个计算结果,根据每次函数调用的参数,可以返回不同的计算结果.Python利用函数提高代码的重 ...
最新文章
- adb server version(31) doesnt match this client(41)
- TheBeerHouse 网站项目学习笔记(5)---架构设计
- java实现输出字符串中的数字字符
- [Leetcode][第109题][JAVA][有序链表转换二叉搜索树][分治][快慢指针][中序遍历]
- 大话Fragment管理
- mysql配置两个猪数据库_Linux下安装启动多个Mysql
- [转]Flex与.NET互操作(三):基于WebService的数据访问(下)
- 腾讯课堂:了解it技术圈的虚拟化容器化之docker
- 优秀程序设计的原则(可以多读读)
- 热烈庆贺:一个月,由70名升级为60名!
- oracle及mysql错误记录
- 编写一个程序,给出汉字“你” “我” “他”在Unicode表中的位置
- excel几个数相加等于某个数_『excel表如何从一列数据中筛选出合计等于某数的某些数?』...
- word:回车替换成空格
- android和夜神模拟器哪个好,天天模拟器和夜神安卓模拟器哪个好 两者功能对比...
- 网易邮箱注册界面设计 html
- RedHat安装yum和配置yum源
- 自适应动态规划matlab,自适应动态规划ADP
- Unity Shader - Get Screen Pos
- 致——世界上最幸福的女孩——Chtholly
热门文章
- 约吗?有料有趣的物联网大会
- 3.7V升压12V电路
- Fmoc-Lys (biotin-PEG4)-OH,1334172-64-3生物素标记的、基于PEG的PROTAC连接物
- [益智]:有7克,2克砝码各一个,天平一个,如何利用
- 一致性检查的具体含义是什么
- 批量html转换word,用Word宏来实现批量将HTML转换成DOC
- ICP增值电信业务许可证是什么
- HTML静态网页毕业设计作品
- 【超图+CESIUM】【基础API使用示例】42、超图|CESIUM - 绘制编辑线段|读取kml文件绘制编辑|导出kml线段数据
- Java 微信开发(四)生成带参数二维码及分享到朋友圈、好友、QQ