美文网首页
Promise入门

Promise入门

作者: Coldhands | 来源:发表于2019-04-22 15:07 被阅读0次

Promise是什么

按照用途来解释
  • 主要用于异步计算。
  • 可以将异步操作队列化,按照期望的顺序执行,返回符合预期的结果。
  • 可以在对象之间传递和操作Promise,帮助我们处理队列。

异步回调

回调有四个问题
  • 嵌套层次很深,易形成“回调地狱”,难以维护。
  • 无法正常使用 return 和 throw。
  • 无法正常检索堆栈信息。
  • 多个回调之间难以建立联系。

Promise简介

初始化一个Promise实例
new Promise(
  /* 执行器 executor */
  function (resolve, reject) {
    // 一段耗时很长的异步操作
    resolve(); // 数据处理完成
    reject(); // 数据处理错误  
  }
).then(function A() {
  // 成功,下一步
}, function B() {
  // 失败,做相应处理
})
Promise详解
  • Promise是一个代理对象,它和原先要进行的操作并无关系。
  • 它通过引入一个回调,避免更多的回调。
Promise有三个状态:
  1. pending [待定] 初始状态(创建实例时,new Promise)
  2. fulfilled [实现] 操作成功(调用resolve)
  3. rejected [被否决] 操作失败(调用reject)
    Promise状态发生改变,就会触发.then()里的响应函数处理后续步骤。
    Promise状态一经改变,不会再变。

Promise实例一经创建,执行器立即执行。

假如一个Promise已经完成,再.then() 会怎样?

console.log('start');

let promise  = new Promise(resolve => {
  setTimeout(() => {
    console.log('the promise fulfilled');
    resolve('hello world');
  }, 1000)
})

setTimeout(() => {
  promise.then(value => {
     console.log(value)
  })
}, 3000)

// start
// the promise fulfilled
// hello world

假如在.then() 的函数里面不返回新的Promise,会怎样?

.then()

  • .then()接受两个函数作为参数,分别代表fulfilled和rejected
  • .then()返回一个新的Promise实例,所以它可以链式调用
  • 当前的Promise状态改变时,.then()根据其最终状态,选择特定的状态响应函数执行
  • 状态响应函数可以返回新的Promisem,或其他值
  • 如果返回新的Promise,那么下一级.then()会在新的Promise状态改变之后执行
  • 如果返回其他任何值,会立即执行下一级.then()

相关文章

  • ES6 爬坑记(一) Promise

    Promise!!!!! 参考文章:阮一峰的ES6入门——Promise章节谷歌开发——Promise节选 1. ...

  • ionic2页面回传值,关于Typescript的Promise

    刚入门,没深究~ -。- 经典:javascript Promise介绍来自谷歌的说明,简单直观 Promise ...

  • Promise.resolve()

    参考文档:ECMAScript 6入门 Promise.resolve()用于将现有对象转换为Promise对象,...

  • es6之深入理解Promise

    一、promise入门 1. Promise对象是什么 2.以前回调这么写 3.用Promise 写回调 4.多层...

  • ECMAScript 6 入门--Promise 对象

    ECMAScript 6 入门--Promise 对象 所谓Promise,简单说就是一个容器,里面保存着某个未来...

  • promise入门

    前言 老生常谈promise对于promise大部分人应该不陌生了,他是ES6的新特性之一,如果你是一个追求潮流的...

  • Promise入门

    Promise是什么 按照用途来解释 主要用于异步计算。 可以将异步操作队列化,按照期望的顺序执行,返回符合预期的...

  • 如何手写一个Promise

    参考文章:《Promise,从入门到放弃》[https://juejin.cn/post/693968889252...

  • Promise入门之:让函数返回一个Promise对象

    Promise入门之:让函数返回一个Promise对象 1:返回一个resolve 运行结果: 2: 返回一个re...

  • Promise对象

    ECMAScript 6 入门 阮一峰出品 Promise含义 pending(进行中)、fulfilled(已成...

网友评论

      本文标题:Promise入门

      本文链接:https://www.haomeiwen.com/subject/xgbnwqtx.html