Promise是JS中进行异步编程的新解决方案。

从语法上来说:Promise是一个构造函数

从功能上来说:promise对象用来封装一个异步操作并可以获取其成功/失败的结果值

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

promise支持链式调用,可以解决回调地狱问题

回调地狱:回调函数嵌套使用,外部回调函数异步执行的结果是嵌套的回调执行的条件。不便于阅读,不便于异常处理。

Promise是什么?
1.1理解
1.抽象表达:
1)Promise是一门新的技术(ES6规范)
2)Promise是JS中进行异步编程的新解决方案
备注:旧方案是单纯使用回调函数
2.具体表达:
1)从语法上来说:Promise是一个构造函数
2)从功能上来说:Promise对象用来封装一个异步操作并可以获取其成功/失败的结果值

异步编程:
*fs文件操作
```
require('fs').readFile('./index.html',(err,data))=>{})
```
*数据库操作
*AJAX
```
$.get('/server', (data)=>{})
```
*定时器
```
setTimeout(()=>{}, 2000);
```

2为什么要用Promise?
2.1 指定回调函数的方式更加灵活
1.旧的:必须在启动异步任务前指定
2.promise:启动异步任务 => 返回promise对象 => 给promise对象绑定回调函数(甚至可以在异步任务结束后指定/多个)
2.2 支持链式调用,可以解决回调地狱问题
1.什么是回调地狱?
回调函数嵌套调用,外部回调函数异步执行的结果是嵌套的回调执行的条件。
2.回调地狱的缺点?
不方便阅读不便于异常处理
3.解决方案?
Promise链式调用

案例

ES6 Promise详解相关推荐

  1. JS 的 Promise详解

    @[TOC](JS 的 Promise详解)欧诺个鱼 1.概念 ES 6 开始支持 Promise. Promise 对象用于一个异步操作的最终完成(包括成功和失败)及结果值的表示.简而言之,就是处理 ...

  2. angular $q promise详解

    前言 通过本文,你大概能清楚angular promise是个啥,$q又是个啥,以及怎么用它.这里咱们先灌输下promise的思想. 下面写的全是废话,一些看着高逼格其实没什么大作用的概念,想知道$q ...

  3. promise 详解

    Promise 作用:主要是来解决Ajax的异步问题 传统方式:回调函数来解决异步问题,类似如下问题 ajax(url, {// 成功后回调ajax(url, {// 成功之后再回调ajax(url, ...

  4. javaScript中Promise详解

    ES2015正式发布(也就是ES6,ES6是它的乳名),其中Promise被列为正式规范.作为ES6中最重要的特性之一,我们有必要掌握并理解透彻.本文将由浅到深,讲解Promise的基本概念与使用方法 ...

  5. ES6中的Promise详解

    Promise 在 JavaScript 中很早就有各种的开源实现,ES6 将其纳入了官方标准,提供了原生 api 支持,使用更加便捷. 定义 Promise 是一个对象,它用来标识 JavaScri ...

  6. ES6 中 Promise 详解

    博客地址:https://ainyi.com/16 Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果.从语法上说,Promise 是一个对象,从它可以获 ...

  7. NodeJS基础2---2 Promise详解

    2019独角兽企业重金招聘Python工程师标准>>> 一.ES6的Promise语言标准.Promise/A+规范 1.Promise是Js针对异步场景的解决方案. Promise ...

  8. Promise详解(一) ----基础用法

    什么是Promise Promise是由社区最早提出并实现的,后加入到es6规范中.为更好处理javascript异步问题,用于解决其多次异步回掉嵌套问题.下面先尝试下promise的基础用法吧. 创 ...

  9. 关于Promise详解

    异步回调 回调地狱 在需要多个操作的时候,会导致多个回调函数嵌套,导致代码不够直观,就是常说的回调地狱 并行结果 如果几个异步操作之间并没有前后顺序之分,但需要等多个异步操作都完成后才能执行后续的任务 ...

最新文章

  1. 从应用到内核查接口超时(中)
  2. 2021全国高校计算机能力挑战赛(初赛)Java试题四
  3. 主题分享 | 王建民:关于工业软件人才培养的思考
  4. pycharm 类型注释_后端开发使用pycharm的技巧
  5. 【PAT乙级】1080 MOOC期终成绩 (25 分)
  6. Python使用xlwt模块 操作Excel文件
  7. 知识图谱基础知识之一——人人都能理解的知识图谱
  8. 多迪技术总监揭秘:PHP为什么是世界上最好的语言?
  9. Java操作Mongo bulkWrite批量入库
  10. 岭南师范C语言程序设计真题_2021南京师范大学现代教育技术考研经验分享
  11. 利用已有的大数据技术,如何构建机器学习平台
  12. docker-3-常用命令(下)
  13. 互联时代如何真正支持与实现数据经济
  14. 计算机桌面出现临时文件,tmp什么文件,为什么出现tmp文件
  15. ESP8266/ESP-01固件下载方法
  16. 第一行代码-第二版(郭霖著)笔记(初识Android)
  17. 6月楼市或迎降价潮 房企策略有调整
  18. python3进阶篇(二)——深析函数装饰器
  19. 【题解 海量集训 并查集】 银河英雄传说
  20. CSR8670/8675 发射(TX SOURCE)USB发射A2DP音乐,实现MIC声音到主机

热门文章

  1. oracle用什么用户安装,Oracle 12cR2 安装示例用户(Sample Schemas)
  2. [DG]oracle12cr2 RAC + DG(2+1)
  3. AcWing 野餐规划
  4. 普元eos使用svn_进行中
  5. Android获取手机日期和时间
  6. javascript利用自定义函数向页面输出自定义的表格,在调用函数时通过传递的参数指定表格的行数
  7. 职称评定不要计算机,中级职称评定可以不要初级职称吗?
  8. 汽车融资租赁系统技术风险及完善措施
  9. 【SHOI2007】【dp】书柜的尺寸
  10. 【韦东山】7天物联网智能家居实战训练营基础班-DAY1