为什么要用promise

1.使用纯回调函数

先指定回调函数,再启动异步任务

答 1.指定回调函数的方式更加灵活

可以在执行任务前,中,后

2.支持链式调用,解决回调地狱问题

什么是回调地狱:回调函数嵌套使用,下一层回调函数依赖上一层回调函数的结果

解决方案。promise链式

终极解决方案 async/await

async function request() {
try {
const result = await dosongthing()
const newResult = await doThirdThing(result)
const finalResult = await doThirdThing2(newResult)
} catch (error) {
failureCallback(error)
}
}

如何使用promise?搞清楚语法(API:前后接口)

定一个函数,就是定义一个api。因为就是一个语法

1.Promise构造函数:Promise(excutor){}

excutor函数: 同步执行 (resolve, reject) => {}

resolve函数: 内部定义成功时候我们调用的函数 value => {}

reject函数: 内部定义失败时候我们调用的函数 reason => {}

说明: excutor会在Promise呢句立即同步调用,异步操作在执行器中执行

2.Promise.prototype.then方法 (onResolved,onRejected)=> {}

onResolved函数:成功时候回调的函数 (value)=> {}

onRejected函数:失败时候回调的函数 (reason)=> {}

返回一个新的promise对象 // 链式调用的一个前提

//内部函数异步执行

3.Promise.prototype.catch方法 (onRejected)=> {}

onRejected函数:失败时候回调的函数 (reason)=> {}

相当于then(null,onRejected)=> {}

new Promise((a, b) => {
setTimeout(() => {
// a('ok')
b('fail')
}, 0)
}).then(
value => {
console.log('onResolved1', value)
}
).catch(
reason => {
console.log('onReject', reason)
}
)

4.Promise.all方法 (promise)=> {}

promise: 包含n个promise的数组

//返回一个promise对象

三个请求都成功才有显示 成功

5.Promise.race方法 (promise)=> {}

promise: 包含n个promise的数组

只看第一个先执行完

promise核心 为什么用promise的更多相关文章

  1. promise核心6 自定义promise

    1.定义整体结构(不写实现) 定义一个自己的promise的库 lib(库的简写) 一个js文件.一个js模块(不能用es6  也不能commjs)(用es5模块语法 ) 匿名函数自调用.IIFE ( ...

  2. Promise核心原理解析

    作者: HerryLo 本文永久有效链接: https://github.com/AttemptWeb...... Promises对象被用于表示一个异步操作的最终完成 (或失败), 及其结果值.主要 ...

  3. Promise核心实现

    核心 构造函数核心 维护状态变量,只能由pending变为resolve或者reject 维护一个存储结果的变量 维护一个回调数组,执行到then,如果我们传入的立即执行函数没有立即执行resolve ...

  4. promise 核心 几个小问题

    1.如何改变pending的壮体 抛出异常.pending变为rejected  // throw new Error('fail')  内部抛出异常也这样 reason为抛出的error resol ...

  5. Promise核心基础

    基础 Promise 抽象表达:是js中进行异步编程的新的解决方案 具体解释:1.从语法上来说是一个构造函数 2.从功能上来说promise对象用来封装一个异步操作并可以获取其结果 状态改变:0.ne ...

  6. 手写一款符合Promise/A+规范的Promise

    手写一款符合Promise/A+规范的Promise 长篇预警!有点长,可以选择性观看.如果对Promise源码不是很清楚,还是推荐从头看,相信你认真从头看到尾,并且去实际操作了,肯定会有收获的.主要 ...

  7. 到底什么是promise?有什么用promise怎么用

    相信很多人刚接触promise都会晕,但学会后却离不开它,本文详细介绍一下promise,promise解决的问题,帮助新手快速上手 [扫盲] 什么是promise? promise是一种约定,并非一 ...

  8. 一步一步实现一个Promise A+规范的 Promise

    2015年6月,ES2015(即ES6)正式发布后受到了非常多的关注.其中很重要的一点是 Promise 被列为了正式规范. 在此之前很多库都对异步编程/回调地狱实现了类 Promise 的应对方案, ...

  9. Promise.resolve( data)与Promise.reject( data )

    Promise.resolve( data)与Promise.reject( data ) 常用来生成已经决议失败或成功的promise实例: 1.Promise.reject(data)不管传递的是 ...

随机推荐

  1. webpack 4 x使用详细

    1.首先安装node.js 2.打开控制台cmd,输入npm install webpack webpack-cli webpack-dev-server -g 3.在本地磁盘上建一个文件夹,然后通过 ...

  2. 【LeetCode】三角形最小路径和

    [问题]给定一个三角形,找出自顶向下的最小路径和.每一步只能移动到下一行中相邻的结点上.例如,给定三角形: [ [], [,], [,,], [,,,] ] 自顶向下的最小路径和为 (即, + + + ...

  3. 多个Activity跳转的小结

    第一个例子:demo1 Main—>SecondActivity—>Main 从流程上看就是从Main跳转到SecondActivity,再从SecondActivity返回到Main.也 ...

  4. POJ1088:滑雪

    滑雪 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 82112   Accepted: 30706 Description ...

  5. HTML的文档结构与语法(一)

    一.走进Web开发 Web运行的原理: 二.HTML 1.1什么是html HTML是用来描述网页的一种语言 HTML指的是超文本标记语言(Hyper Text Markup Language) 超文 ...

  6. cf 762C. Two strings

    因为要删去1个串(读错题),所以就直接二分搞就好了. 需要预处理出2个分别从头到尾,或从尾到头需要多长a串的数组,然后二分删去多长就好了. #include<bits/stdc++.h> ...

  7. 021-PHP常用的数值类型判断函数

    <?php //判断数组 $colors = array("red", "blue", "green"); if(is_array($ ...

  8. React 学习笔记(2) 路由和UI组件使用

    安装依赖 cnpm install react-router-dom -S // 或 yarn add react-router-dom 导入 // index.js import React fro ...

  9. K均值聚类算法

    k均值聚类算法(k-means clustering algorithm)是一种迭代求解的聚类分析算法,其步骤是随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个 ...

  10. 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:测试SSH框架分层整合及验证事务是否有效

    测试框架分层的整合 HibernateTemplate 和 HibernateDaoSupport,这两个类是 Spring 为整合 Hibernate3 提供的两个工具类. HibernateTem ...