day24 - 回调函数callback和promise

一、callback:

回调函数的概念:

  • 函数属于对象,同时函数也是对象的构造器。
  • 函数A当做参数,传递给另外一个函数B,函数A就是回调函数。
  • 回调函数和同步异步并没有直接的关系,同步回调,异步回调,事件处理回调,延迟回调…

二、promise:(es6新增)

Promise 异步编程的一种解决方案,比传统的解决方案(回调函数和事件)——更合理和更强大
1.Promise对象有以下两个特点:
(1)对象的状态不受外界影响。Promise对象代表一个异步操作,有三种状态:pending(进行中)、fulfilled(resolve已成功)和rejected(已失败)。
(2)一旦状态设定,就不会再变,任何时候都可以得到这个结果。Promise对象的状态改变,只有两种可能:从pending变为fulfilled和从pending变为rejected。只要这两种情况发生,状态就凝固了。

2.Promise语法:
原型上存在then方法和catch方法

new Promise(function (resolve, reject) {
    resolve(res) //表示成功的回调
    reject(err) //表示失败的回调
}).then(function (res) {
    // 成功的函数
}).catch(function (err) {
    // 失败的函数
})

3.promise下的两个静态方法:

  • Promise.all( ):用于将多个 Promise 实例,包装成一个新的 Promise实例,接受一个数组作为参数,只有数组里面的每个状态都变成resolve,则新的Promise实例状态才会变成resolve。
  • Promise.race( ):赛跑的意思。那个状态改变最快,跟着状态。
let p1 = new Promise((resolve,reject)=>{
    setTimeout(() => {
        reject('任务1');//失败的回调
    }, 3000);
});

let p2 = new Promise((resolve,reject)=>{
    setTimeout(() => {
        resolve('任务2');//成功的回调
    }, 1000);
});

let p3 = new Promise((resolve,reject)=>{
    setTimeout(() => {
        resolve('任务3');//成功的回调
    }, 5000);
});

Promise.all()let newpromise = Promise.all([p1,p2,p3]);
newpromise.then(function(data){
    console.log(data);//数组  ["任务1", "任务2", "任务3"]
}).catch(function(){
    console.log('失败的状态');
})

Promise.race():谁快谁先执行
let newpromise = Promise.race([p1,p2,p3]);
newpromise.then(function(data){
    console.log(data);//任务2
}).catch(function(){
    console.log('失败的状态');
});

4.谈谈你对promise的了解(面试)
1、Promise是最早由社区提出和实现的一种解决异步编程的方案,比其他传统的解决 方案(回调函数和事件)更合理和更强大。
2、Promise对象的状态不受外界影响,有3个状态:
     (1)pending 初始状态
     (2)fulfilled 成功状态
     (3)rejected 失败状态
3、Promise的状态一旦改变,就不会再变。
4、Promise一旦新建就会立即执行,无法中途取消。
5、Promise如果不设置回调函数,Promise内部就会报错,不会反映到外部。
6、当处于pending状态时,无法得知目前进展到哪一个阶段,是刚刚开始还是即将完成。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值