promise核心技术 2.两种回调函数 js中error的处理
抽空详细学习一下什么是回调函数(一个回调函数,也被称为高阶函数)
1.什么样的函数是回调函数
- 自己定义的(sittimeout不是自己定义的)
- 没有调用
- 自己执行
1.同步回调与异步回调函数
同步回调函数
const arr = [1, 2, 3]
arr.forEach(item => {
console.log(item)
}) //同步回调,任务启动后(等待完成),直接执行回调函数,再往下执行 console.log("later")
异步回调函数
setTimeout(() => {
console.log('callback()')
},0) // 任务启动后,代码往下执行,任务放入队列,下面代码执行完,再执行队列任务
console.log("later")
如何判断一个回调函数是不是异步
在回调函数后面写一个打印输出。如果在任务完成后打印,就是同步
2.JS中 error处理
1.错误的类型
- Error:所有错误的父类型
- ReferenceError 引用变量不存在 // a = ''' b
- TypeError 数据类型不正确 // b = [] b.XXX
- RangeError 数值不在允许的范围内 //递归
- SyntaxError 语法错误 // var a =""""
出了错误不处理 程序不会向下执行(错误被捕获后就程序就会向下执行)
2.错误的处理
捕获错误 try catch(原生程序抛出错误)
try {
let d
console.log(d.xxx)
} catch (error) {
console.log(error)
} // error对象中有两个属性 massege和stack
抛出错误:throw error + 捕获 //可以自己抛出不明错误 让外部处理
function proxy() {
if (Date.now()%2 === 1) {
console.log("ok")
} else {
throw new Error('这是错误信息提示文本error.massage') //内部抛出错误用具体的 我们抛出用这个
}
}
try {
proxy()
} catch (error){
console.log(error.message)
}
3
promise核心技术 2.两种回调函数 js中error的处理的更多相关文章
- js两种定义函数、继承方式及区别
一:js两种定义函数的方式及区别 1:函数声明: function sayA() { alert("i am A"); } 2:函数表达式: var sayB = function ...
- [教程]Delphi 中三种回调函数形式解析
Delphi 支持三种形式的回调函数 全局函数这种方式几乎是所有的语言都支持的,类的静态函数也可以归为此类,它保存的只是一个函数的代码起始地址指针( Pointer ).在 Delphi 中声明一般为 ...
- javascript两种声明函数的方式的一次深入解析
声明函数的方式 javascript有两种声明函数的方式,一个是函数表达式定义函数,也就是我们说的匿名函数方式,一个是函数语句定义函数,下面看代码: /*方式一*/ var FUNCTION_NAME ...
- 两种const函数
有两种const函数,声明如下:1.const T func();2.T func() const;第一种表示返回的是const的类型,也即返回的值不能作为左值,楼主懂的.第二种表示该成员函数不能修改 ...
- 两种方法使用js读写cookie实现一个底部广告浮层效果
下面一个案例实现了js实现一个页面浮层并且使用两种方法使用js读写cookie:来实现用户关闭广告的显示状态: 读者可以将下面代码复制到一个html文件试试效果:html的pre标签未两种js实现的方 ...
- 子查询。ANY三种用法。ALL两种用法。HAVING中使用子查询。SELECT中使用子查询。
子查询存在的意义是解决多表查询带来的性能问题. 子查询返回单行多列: ANY三种用法: ALL两种用法: HAVING中的子查询返回单行单列: SELECT中使用子查询:(了解就好,避免使用这种方法! ...
- JS里面的两种运动函数
最新学了一个新的运动函数,与最初学习的有所不同,第一个运动是根据运动速度完成运动 ,第二个则是根据运动的时间来完成运动,而且把之前的函数都进行了一些兼容处理,在这里列出了看一下: 第一种animate ...
- JS两种声明函数的方法以及调用顺序
两种声明方法: 1. var a = function () {...}; 2. function a() {...}; 第一种方式必须先声明后调用,而第二种方式函数调用在声明之前之后都可以. //第 ...
- 两种open()函数
C语言中文件操作函数中,open()有两种形式: 一种形式是有两个参数open2: 另一种形式是有三个参数open3: 共有的参数有两个,第一个是"被打开文件的路径",第二个是&q ...
随机推荐
- OpenResty 实现项目的灰度发布
1.安装 openresty 依赖模块: [root@Centos opt]# yum -y install pcre-devel openssl openssl-devel postgresql-d ...
- Tornado -- 7 - 查询结果
查询结果 查询结果总结: 条件查询 多表查询
- pandas包 —— drop()、sort_values()、drop_duplicates()
一.drop() 函数 当你要删除某一行或者某一列时,用drop函数,它不改变原有的df中的数据,而是返回另一个dataframe来存放删除后的数据. 1.命令: df.drop() 删除行:df.d ...
- wdcp升级php5.8到php7.1.12后安装swoole
http://pecl.php.net/package/swoole wget http://pecl.php.net/get/swoole-4.0.1.tgztar zxvf swoole-4.0. ...
- SwiftUI中多设备运行方法
https://blog.csdn.net/weixin_42679753/article/details/94465674 https://www.jianshu.com/p/17fc7929fcb ...
- uniapp属性插值报错Interpolation inside attributes has been removed. Use v-bind or the colon shorthand instead.
解决方法: 因为vue 2.x不支持对属性使用插值{{}}的方式赋值,所以要使用v-bind指令(或简写“:”)来指定属性. v-bind指令 v-bind:id="item.id" ...
- leetcode1019 Next Greater Node In Linked List
""" We are given a linked list with head as the first node. Let's number the nodes in ...
- [题解] LuoguP2764 最小路径覆盖问题
传送门 好久没做网络流方面的题发现自己啥都不会了qwq 题意:给一张有向图,让你用最少的简单路径覆盖所有的点. 考虑这样一个东西,刚开始,我们有\(n\)条路径,每条路径就是单一的一个点,那么我们的目 ...
- JuJu团队11月25号工作汇报
JuJu团队11月25号工作汇报 JuJu Scrum 团队成员 今日工作 剩余任务 困难 于达 实现随机采样函数,进行onehot处理 预处理数据集,将数据集转为矩阵读入 数据集预处理比想象中麻 ...
- Python基础week1
本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语 ...