代码报错会走向失败时的回调

 let p = new Promise((resolve, reject) => {
throw new Error("我错了"); //会失败
}) p.then((data) => {
console.log(data)
}, (err) => {
console.log(err) // 执行这个方法
})

执行reject会走向失败时的回调

let p = new Promise((resolve, reject) => {
reject("我错了") //会失败
}) p.then((data) => {
console.log(data)
}, (err) => {
console.log(err) // 执行这个方法
})

执行resolve会执行成功时的回调

let p = new Promise((resolve, reject) => {
resolve("我对了") // 会成功
}) p.then((data) => {
console.log(data) // 执行此方法
}, (err) => {
console.log(err)
})

不执行的情况

let p = new Promise((resolve, reject) => {
console.log("不知道");
}) p.then((data) => {
console.log(data) // 不执行
}, (err) => {
console.log(err) // 不执行
})

链式调用可以返回普通值

let p = new Promise((resolve, reject) => {
resolve("执行1")
}) p.then((data) => {
return "执行2"
}).then((data) => {
return "执行3"
}).then((data) => {
console.log(data) //执行3
})

链式调用可以返回promise

let p = new Promise((resolve, reject) => {
resolve("执行1")
}) p.then((data) => {
return new Promise((resolve, rejext) => {resolve("执行2")})
}).then((data) => {
return new Promise((resolve, rejext) => {resolve("执行3")})
}).then((data) => {
console.log(data) //执行3
})

链式调用也可以不返回任何值直接到达下一步

let p = new Promise((resolve, reject) => {
resolve("执行1")
}) p.then((data) => {
// 跳过我吧!
}).then((data) => {
return new Promise((resolve, rejext) => {resolve("执行3")})
}).then((data) => {
console.log(data) //执行3
})

手写一个promise:https://github.com/wuxianqiang/promise

promise使用方法的更多相关文章

  1. js回调地域 和 用promise解决方法

    回调地狱: function3({cb3()}){ function2({cb2(cb3)}){ //cb2触发了cb3,并传值 function1({cb1(cb2)}){ //cb1触发了cb2, ...

  2. [转载]es6 Promise.resolve()方法

    es6 Promise.resolve()方法 2018-01-27 22:29:06 ixygj197875 阅读数 16925更多 分类专栏: ES6标准入门 (阮一峰) ES6标准入门   Pr ...

  3. es6 Promise.reject()方法

    es6 Promise.reject()方法:https://blog.csdn.net/ixygj197875/article/details/79188195

  4. 如何使用 js 实现一个 Promise.all 方法 PromiseAll

    如何使用 js 实现一个 Promise.all 方法 PromiseAll Promise.all PromiseAll https://developer.mozilla.org/en-US/do ...

  5. promise.all方法合并请求接口的两个值

    function promise1 = new Promise((resolve,reject)=>{ return result1 }) function promise2 = new Pro ...

  6. ES6中的Promise使用方法与总结

    在javascript中,代码是单线程执行的,对于一些比较耗时的IO操作,都是通过异步回调函数来实现的. 但是这样会存在一个问题,当下一个的操作需要上一个操作的结果时,我们只能把代码嵌到上一个操作的回 ...

  7. Promise.then方法的执行顺序例题分析

    1. 当Promise对象作为resolve的参数时 const p = Promise.resolve(); const p1 = Promise.resolve(p); //就是p const p ...

  8. 实现一个promise.all方法

    思路: 1:首先明白all的用法 2:promise.all可以接受一个由promise数组作为参数,并且返回一个promise实例, 3:promise.all([a,b,c...]).then方法 ...

  9. Promise (2) 基本方法

    "I'm Captain Jack Sparrow" 加勒比海盗5上映,为了表示对杰克船长的喜爱,昨天闪现了几次模仿船长的走路姿势(哈哈哈,简直妖娆). 为了周天能去看电影,要赶紧 ...

随机推荐

  1. [linux] C语言Linux系统编程-socket开发响应HTTP协议

    #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h&g ...

  2. 解析库-beautifulsoup模块

    # -*- coding: utf-8 -*- from bs4 import BeautifulSoup # 安装:pip install beautifulsoup4 # Beautiful So ...

  3. bzoj:3994:vijos1949: [SDOI2015]约数个数和

    Description  设d(x)为x的约数个数,给定N.M,求     Input 输入文件包含多组测试数据. 第一行,一个整数T,表示测试数据的组数. 接下来的T行,每行两个整数N.M.   O ...

  4. BZOJ 1041: [HAOI2008]圆上的整点【数论,解方程】

    1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4210  Solved: 1908[Submit][Sta ...

  5. 4395: [Usaco2015 dec]Switching on the Lights

    每次到达一个点,或者点亮一个房间的灯的时候,检查一下它四周的点能否走. 一开始看错题了..要求的是最多能开多少房的灯. #include<cstdio> #include<iostr ...

  6. 客户端一致性与多Leader机制------《Designing Data-Intensive Applications》读书笔记7

    接着上一篇的内容,我们继续来梳理分布式系统之中的副本机制与副本一致.上文我们聊到了在可用性与一致性之间的一个折中的一致性等级:最终一致性.我们顺着上篇的内容,由用户来分析一致性等级. 1. 客户端的困 ...

  7. jvm内存模型-回收算法-和内存分配以及jdk、jre、jvm是什么关系(阿里,美团,京东面试题)

    1.什么是jvm?(1)jvm是一种用于计算设备的规范,它是一个虚构出来的机器,是通过在实际的计算机上仿真模拟各种功能实现的.(2)jvm包含一套字节码指令集,一组寄存器,一个栈,一个垃圾回收堆和一个 ...

  8. redis3.0 集群在windows上的配置(转)

    1. 安装Redis版本:win-3.0.501https://github.com/MSOpenTech/redis/releases页面有,我下载的是zip版本的:Redis-x64-3.0.50 ...

  9. C#应用程序运行到linux【CentOS】

    具体的操作方法在linux.Net中.最近要部署网站在centOS,以及测试下小程序跑到上面.刚好实现了一番 说说C#应用程序如何跑到centOS.非常的简单. 1.准备工具“AnyExec”[工具在 ...

  10. HTTPS和HTTP的区别是什么?

    广泛应用于互联网世界的HTTP想必是大家再熟悉不过的了,然而细心的朋友可能发现淘宝.百度.网上银行等网站都变成HTTPS开头,并且还有一把小绿锁挂在地址栏,那么HTTPS和HTTP的区别是什么呢? 一 ...