promise 从入门到精通1(准备篇)
从这一篇,我将一步步带大家写出一个promise,大家不用着急,我这博客是边写,边做的笔记,所以有可能啰嗦,
也会出现很多错误,不过我们不着急,一点点解决,总会全部搞定的!
在学习promise 之前呢,我希望你有es6基础知识,什么解构语法,let const 都要会用,这起码的吧!
————————————————————————————————————————————————————————
开始,准备
在js 中,函数是第一原型
const fn = new Fn(); fn 就是实例对象, new 一个,肯定就是实例对象了!
Fn.prototype Fn 就是函数对象了,因为它不是实例对象,就是函数对象,我也成为类对象!
上面稍微理解下就行了,以后还会慢慢看到,
上面就是同步的回调,它会先遍历完数组,再打印最后一条语句
好,异步回调:
看到没, 异步的回调会放到回调队列中,所以执行慢一点,后执行!
——————————————————————————————————————————————
一般我们去学js 的时候,会出现报错信息,我们都能很开心的处理好,所以没有注意到底是啥错误类型,上面列表出来了
学过java 都知道类有子类,父类的概念,比如,哺乳动物,有人,牛,马等,算了,我给大家画一个图:
人,牛,马都是哺乳动物,所以哺乳动物就是父类, 而人牛马就是哺乳动物的子类
说白了,人牛马是哺乳动物的一种
而我们的错误
23456 类型的错误都是1错误的一种!
——————————————————————————————
行,错误的知识都在上面了,下面我们就好好体会下错误!
1, 引用变量不存在,我们写写!
这个和Java空指针差不多,我感觉,就是指针找不到对象!
1. 错误的类型
Error: 所有错误的父类型
ReferenceError: 引用的变量不存在
TypeError: 数据类型不正确的错误
RangeError: 数据值不在其所允许的范围内
SyntaxError: 语法错误
2. 错误处理
捕获错误: try ... catch
抛出错误: throw error
3. 错误对象
message属性: 错误相关信息
stack属性: 函数调用栈记录信息
*/
// 1. 常见的内置错误
// 1). ReferenceError: 引用的变量不存在
// console.log(a) // ReferenceError: a is not defined
// console.log('-----') // 没有捕获error, 下面的代码不会执行
// TypeError: 数据类型不正确的错误
// let b
// // console.log(b.xxx) // TypeError: Cannot read property 'xxx' of undefined
// b = {}
// b.xxx() // TypeError: b.xxx is not a function
// RangeError: 数据值不在其所允许的范围内
// function fn() {
// fn()
// }
// fn() // RangeError: Maximum call stack size exceeded
// SyntaxError: 语法错误
// const c = """" // SyntaxError: Unexpected string
// 2. 错误处理
// 捕获错误: try ... catch
// try {
// let d
// console.log(d.xxx)
// } catch (error) {
// console.log(error.message)
// console.log(error.stack)
// }
// console.log('出错之后')
// 抛出错误: throw error
function something() {
if (Date.now()%2===1) {
console.log('当前时间为奇数, 可以执行任务')
} else { // 如果时间是偶数抛出异常, 由调用来处理
throw new Error('当前时间为偶数无法执行任务')
}
}
// 捕获处理异常
try {
something()
} catch (error) {
alert(error.message)
}