回调函数与promise

回调

  • 把一个函数A传给另一个函数B调用,那么A就是回调函数

具名回调写法

function 获取用户信息(fn){
    fn.call(undefined,'姓名:xxx')
}
function 用户信息(信息){
    console.log(信息)
}
获取用户信息.call(undefined,用户信息)
//姓名:xxx

匿名回调写法

function 获取用户信息(fn){
    fn.call(undefined,'姓名:xxx')
}

获取用户信息.call(undefined,function(信息){
    console.log(信息)
})

多层嵌套的匿名回调(回调地狱)

获取用户信息(function(用户信息){
  console.log(用户信息)
  保存用户信息(用户信息, function(){
    获取另一个用户信息(function(另一个用户信息){
      保存用户信息(function(){})
    })
  })
})

像这种使用多层匿名函数回调的嵌套,就会很难让人读懂你的代码,而这种回调套回调(一般三到五层以上)又称为回调地狱

缺点

  • 容易造成回调地狱
  • 不知道该怎么使用回调Node/jQuery的回调使用方法都不一样--只能强行背下

Promise

Promises对象是CommonJS工作组提出的一种规范,目的是为异步编程提供统一接口
每一个异步任务返回一个Promise对象,该对象有一个then方法,允许指定回调函数。
作用:
(1)简化回调写法
(2)链式操作

基本用法

Promise是一个构造函数,Promise接收一个参数,这个参数是函数,同时这个参数函数要传入两个参数:resolve,reject,分别表示异步操作执行成功后的回调函数和异步操作执行失败后的回调函数。

1.解决了不知道该如何使用回调问题

then里面的第一个参数是成功后要做的,第二个是失败后要做的

获取用户信息().then(function(){},function(){})

2.解决了回调地狱

可以不断地then,就不存在嵌套了,永远只有一层

获取用户信息()
.then(打印用户信息)
.then(获取另一个用户信息)
.then(打印用户信息)

使用promise实现上面回调地狱中的案例

function 获取用户信息(){
    return new Promise((resolve,reject)=>{
        console.log('第一次获取用户信息')
        resolve('姓名:方方')
    })
}
function 打印用户信息(用户信息){
    return new Promise((resolve,reject)=>{
        console.log(用户信息)
        resolve()
    })
}
function 获取另一个用户信息(){
    return new Promise((resolve,reject)=>{
        //下面的console是同步
        console.log('第二次获取用户信息')
        //resolve和reject是异步
        resolve('姓名:琳琳')
    })
}
获取用户信息()
    .then(打印用户信息)
    .then(获取另一个用户信息)
    .then(打印用户信息)

//第一次获取用户信息
//姓名:方方
//第二次获取用户信息
//姓名:琳琳
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,277评论 1 45
  • 占坑
    Camilia_yang阅读 1,166评论 0 0
  • 10.1.2 Document 类型 4、特殊集合 除了属性和方法,document对象还有一些特殊的集合这些集合...
    kathyever阅读 1,360评论 0 0
  • Smileball has come to a dangerous world. You want to help...
    Madelines阅读 876评论 0 0
  • 现在我们,时不时的喝着鸡汤。豪情万丈的我们。时不时的剑走江湖。 前几天我和我的一个大学同学聊天,虽然看不到她的脸,...
    火土土阅读 2,875评论 0 0

友情链接更多精彩内容