Promise学习1:Promise介绍与基本使用、前序知识

Promise介绍与基本使用

ES6引入的进行异步编程的新解决方案(备注:就方案使用回调函数)
具体表达:

  • 从语法上来说:promise就是一个构造函数
  • 从功能上来说:promise对象用来封装一个异步操作并可以获取其成功/失败的结果值
    异步操作:
  1. fs 文件操作;
require('fs').readFile('./index.html',(err,data)=>{})
  1. 数据库操作;
  2. AJAX;
  3. 定时器
setTimeout(()=>{},2000)

什么要使用Promise

使用回调函数的方式更加灵活

旧的回调方式必须要在启动异步之前调用;

promise:启动异步操作=>返回promise对象=>给promise对象绑定回调函数(甚至可以在异步任务结束之后指定多个)

支持链式调用,解决回调地狱的问题

  1. 回调地狱就是嵌套调用,外部回调函数异步执行的结果是嵌套的回调执行的条件;
  2. 回调地狱不便于阅读,不便于异常处理;
  3. 解决方案就是promise链式调用

区别实例对象与函数对象

函数对象:将函数作为对象使用时,称为函数对象;

实例对象:new 函数产生的对象,简称为对象

总结

点的左边:对象

()的左边:函数

两种类型的回调函数

同步回调

立即执行,完全执行完才结束,不会放到回调队列中

例子:数组便利相关的回调函数

const arr=[1,2,3]
arr.forEach(item=>{//同步执行回调函数
    console.log('forEach callback()',item)
})
console.log('这个最后输出')

异步回调

不会立即执行,会放入回调队列中将来执行
例子:定时器回调,ajax回调,Promise的成功|失败的回调

setTimeout(()=>{
    console.log('setTimeout callback')
},0)
console.log('这个先输出')

JS中的error处理

错误的类型

  1. Error:所有错误的父类型;
  2. ReferenceError:引用变量不存在,如:变量在使用前没定义
  3. TypeError:数据类型不正确的错误
let b=null
console.log(b.xxx)
  1. SyntaxError:语法错误
  2. RangeError:数据值不在其所允许的范围内
function fn(){
    fn()
}
fn()
//栈的空间有限

错误处理

捕获错误:
希望错误不要成为断点,能够继续往下执行

try{
    const e={}
    e()
}catch(error){
    console.log(error.message)
    console.log(error.stack)
}

抛出错误:

function doThing(){
    //当前时间为奇数就能正常干活,否则不能干活
    const time=Date.now()
    if(time%2==1){
        console.log('当前时间为奇数,正常干活。。。')
    }else{
        //不能干活,且告诉调用者
        throw new Error('当前时间为偶数。干不了'+time)
    }
}
try{
    doThing()
}catch(error){
    alert(error.message)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李喵喵爱豆豆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值