冇事来学系--Vue2.0中Promise详讲(上)

简介: 回调地狱多层回调函数的相互嵌套,就形成了回调地狱

回调地狱

多层回调函数的相互嵌套,就形成了回调地狱

// 示例
setTimeout(()=>{    // 第一层
  console.log('延迟一秒后输出')
  setTimeout(()=>{    // 第二层
    console.log('再延迟两秒后输出')
    setTimeout(()=>{    // 第三层
      console.log('再延迟三秒后输出')
    },3000)
  },2000)
},1000)

回调地狱的缺点:

  1. 代码耦合性太强,牵一发而动全身,难以维护
  2. 大量冗余代码相互嵌套,可读性差

为了解决回调地狱的问题,ES6新增了Promise的概念,因为Promise支持链式调用


网络异常,图片无法展示
|


Promise基本概念

promise是JS中进行异步编程的新解决方案(旧方案是单纯使用回调函数)

从语法上来说Promise是一个构造函数;从功能上来说Promise对象用来封装一个异步操作,并可以获取其成功/失败的结果

补充:异步操作包括以下:node中的fs文件操作、数据库操作、Ajax请求、定时器等等

网络异常,图片无法展示
|

1.  Promise是一个构造函数

  • 可以new一个Promise实例对象。Promise在实例化的时候需要接收一个函数参数 ,该函数有两个形参resolvereject,通过调用resolve和reject可以改变Promise对象的状态 (初始化、成功、失败三种状态)
// resolve解决 函数类型的数据,异步任务成功的时候调用resolve
// reject拒绝  函数类型的数据,异步任务失败的时候调用reject
const p = new Promise((resolve, reject)=>{
})
  • new出来的Promise实例对象,代表一个异步操作

2.  Promise的原型对象Promise.prototype上包含一个.then( )方法

每一次new Promise( )得到的实例对象,都可以通过原型链访问到.then( )方法,如p.then( )

3.  .then( )方法用来预先指定成功和失败的回调函数

  • p.then(成功的回调函数, 失败的回调函数)
  • p.then(result=>{ }, reason={ })
  • 调用.then( )方法时,成功时的回调函数是必选的,失败的回调函数是可选的
  • 当promise对象是成功状态(异步代码调用了resolve函数),.then方法就会执行成功的回调函数
  • 网络异常,图片无法展示
    |

例子:抽奖案例

网络异常,图片无法展示
|

网络异常,图片无法展示
|

使用Promise对上述的功能进行封装。

.then方法传入两个参数,均为函数,一个是操作成功的时候调用,另一个是操作失败时调用

只有在Promise中的resolve和reject中传入了形参,才可以在.then中这两个函数使用形参接收传递的值

网络异常,图片无法展示
|

目录
相关文章
|
前端开发
冇事来学系--Vue2.0中Promise详讲(下)
then-fs的基本使用 可以通过node下载then-fs。 npm install then-fs
165 0
|
6月前
|
前端开发 JavaScript
如何处理 JavaScript 中的异步操作和 Promise?
如何处理 JavaScript 中的异步操作和 Promise?
64 1
|
6月前
|
前端开发 JavaScript
在JavaScript中,什么是promise、怎么使用promise、怎么手写promise
在JavaScript中,什么是promise、怎么使用promise、怎么手写promise
94 4
|
6月前
|
前端开发 JavaScript 开发者
JavaScript 中的异步编程:Promise 和 Async/Await
在现代的 JavaScript 开发中,异步编程是至关重要的。本文将介绍 JavaScript 中的异步编程概念,重点讨论 Promise 和 Async/Await 这两种常见的处理异步操作的方法。通过本文的阐述,读者将能够更好地理解和应用这些技术,提高自己在 JavaScript 开发中处理异步任务的能力。
|
5月前
|
前端开发 JavaScript 开发者
JavaScript进阶-Promise与异步编程
【6月更文挑战第20天】JavaScript的Promise简化了异步操作,从ES6开始成为标准。Promise有三种状态:pending、fulfilled和rejected。基本用法涉及构造函数和`.then`处理结果,如: ```javascript new Promise((resolve, reject) => { setTimeout(resolve, 2000, '成功'); }).then(console.log); // 输出: 成功
86 4
|
6月前
|
JSON 前端开发 JavaScript
【JavaScript技术专栏】JavaScript异步编程:Promise、async/await解析
【4月更文挑战第30天】JavaScript中的异步编程通过Promise和async/await来解决回调地狱问题。Promise代表可能完成或拒绝的异步操作,有pending、fulfilled和rejected三种状态。它支持链式调用和Promise.all()、Promise.race()等方法。async/await是ES8引入的语法糖,允许异步代码以同步风格编写,提高可读性和可维护性。两者结合使用能更高效地处理非阻塞操作。
83 0
|
4月前
|
前端开发 JavaScript
JavaScript异步编程:Promise与async/await的深入探索
【7月更文挑战第9天】Promise和async/await是JavaScript中处理异步编程的两大利器。Promise为异步操作提供了统一的接口和链式调用的能力,而async/await则在此基础上进一步简化了异步代码的书写和阅读。掌握它们,将使我们能够更加高效地编写出清晰、健壮的异步JavaScript代码。
|
4月前
|
前端开发 JavaScript 定位技术
JavaScript 等待异步请求数据返回值后,继续执行代码 —— async await Promise的使用方法
JavaScript 等待异步请求数据返回值后,继续执行代码 —— async await Promise的使用方法
54 1
|
5月前
|
前端开发 JavaScript
Promise是JavaScript解决异步问题的构造器,代表未来的不确定值。
【6月更文挑战第27天】Promise是JavaScript解决异步问题的构造器,代表未来的不确定值。它避免了回调地狱,通过链式调用`.then()`和`.catch()`使异步流程清晰。
47 2
|
5月前
|
前端开发 JavaScript
JavaScript异步处理避免了单线程阻塞,如回调函数、Promise和async/await。
【6月更文挑战第22天】JavaScript异步处理避免了单线程阻塞,如回调函数、Promise和async/await。回调是基础,用于在操作完成后执行函数;Promise管理异步状态,支持链式调用;async/await提供同步代码外观,简化错误处理。每种技术在处理耗时任务时都起着关键作用。
47 3