美文网首页
Promise 异步编程

Promise 异步编程

作者: 名字是乱打的 | 来源:发表于2020-06-11 18:51 被阅读0次

一 什么是Promise呢?

\color{red}{ES6中Promise非常重要,好用,Promise是异步编程的一种解决方案.}

举个栗子:有时候我们会进行多次axios请求,这些请求需要一定的顺序性,比如

这样的代码虽然不会出现问题,但是代码比较难看而且不易维护,Promise可以以一种非常优雅的方式来解决这个问题。

二 promise语法
promise采用的是链式编程,如图是一个简单的promise栗子

这里将业务进行一定的拆分了,我们在(resolve,reject)=>{},1000)里写了定时任务,真正处理的却是调用resolve()后进入的 .then( ()=>{ } )里


分析:esolve, reject它们是什么呢?
通常情况下,我们会根据请求数据的成功和失败来决定调用哪一个。

  • 成功: 会调用resolve(messsage),这个时候,我们后续的then会被回调。
  • 失败: 会调用reject(error),这个时候,我们后续的catch会被回调。

三 Promise三种状态

当我们开发中有异步操作时, 就可以给异步操作包装一个Promise

异步操作之后会有三种状态
  • pending:等待状态,比如正在进行网络请求,或者定时器没有到时间。
  • fulfill:满足状态,当我们主动回调了resolve时,就处于该状态,并且会回调.then()
  • reject:拒绝状态,当我们主动回调了reject时,就处于该状态,并且会回调.catcah()

四Promise的链式调用

我们在看Promise的流程图时,发现无论是then还是catch都可以返回一个Promise对象。所以,我们的代码其实是可以进行链式调用的:
这里我们直接通过Promise包装了一下新的数据,将Promise对象返回了
Promise.resovle():将数据包装成Promise对象,并且在内部回调resolve()函数

Promise.reject():将数据包装成Promise对象,并且在内部回调reject()函数
简化版代码:

如果我们希望数据直接包装成Promise.resolve,那么在then中可以直接返回数据
注意下面的代码中,我讲return Promise.resovle(data)改成了return data

结果依然是一样的
最简化版代码:省略promise. resolve, return时候可以自己封装
我们也可以如下图一样,一次进行多次处理,返回和接收两个结果集(数组结果集)

比如我们下一次的处理需要进行两次请求拿到数据才可以进行下一步的处理.


相关文章

  • 深入了解下Promise

    Promise 意义 Promise 的诞生与 Javascript 中异步编程息息相关,js 中异步编程主要指 ...

  • Angular $q

    $q采用的是promise式的异步编程.什么是promise异步编程呢?异步编程最重要的核心就是回调,因为有回调函...

  • part1整理

    函数式编程:JavaScript函数式编程指南 异步编程:异步编程 Promise源码 JavaScript基础知...

  • Promise

    1. Promise是什么 为解决异步编程,Common js 社区提出了Promise的规范,为异步编程提供了更...

  • ES6 promise理解

    一、promise 是什么 1、Promise 是 JS 中解决异步编程的一种方案。 拓展:js中解决异步编程的...

  • react 中的 promise详解

    一、promise是什么?为什么会有promise? 首先,promise是js的抽象异步处理对象实现异步编程的方...

  • 【ECMAScript6】 Promise

    Promise 是什么 Promise 是 ES6 为 JavaScript 异步编程定义的全新 api 。为异步...

  • ES6-Promise

    参考链接: 1.阮一峰Promise解读 2.Promise用法讲解 Promise含义 Promise是异步编程...

  • ES6 Promise简单封装

    /* * Promise --是异步编程的一种解决方案 消除异步操作(有了Promise对象,就可以...

  • JavaScript Promise 对象

    一、什么是Promise ECMAscript 6 提供了 Promise 对象。Promise 是异步编程的一个...

网友评论

      本文标题:Promise 异步编程

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