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

 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. EMMC与nand flash的区别【转】

    1.NAND Flash 是一种存储介质,要在上面读写数据,外部要加主控和电路设计. 2.eMMC是NAND flash+主控IC ,对外的接口协议与SD.TF卡类似:对厂家而言简化了电路设计,降低了 ...

  2. 关于java解析xml文件出现的问题

    DOM解析xml文件 问题1:导入javax.xml.parsers.DocumentBuilderFactory出现问题,如图: 解决办法是:由于创建工程时有个默认的jre,重新创建工程改掉就解决了 ...

  3. 【转】adb操作命令详解及大全

    adb是什么?:adb的全称为Android Debug Bridge,就是起到调试桥的作用.通过adb我们可以在Eclipse中方面通过DDMS来调试Android程序,说白了就是debug工具.a ...

  4. asp.net core 多端口监听&日志服务

    1 配置多个端口监听 HostingAbstractionsWebHostBuilderExtensions. public static IWebHostBuilder UseUrls(this I ...

  5. MyBatis之基于XML的属性与列名映射

    上一博客主要是对单表的增删改查,比较简单,而且每个属性与table表的列都是一一对应名字也一样,今天主要学习属性与table表列名不一致的处理,主要有两种一是属性与列名不一致,二是枚举的情况,这里暂时 ...

  6. Python爬虫笔记(一):爬虫基本入门

    最近在做一个项目,这个项目需要使用网络爬虫从特定网站上爬取数据,于是乎,我打算写一个爬虫系列的文章,与大家分享如何编写一个爬虫.这是这个项目的第一篇文章,这次就简单介绍一下Python爬虫,后面根据项 ...

  7. C/C++中inline用法详解

    (一)inline函数(摘自C++ Primer的第三版) 在函数声明或定义中函数返回类型前加上关键字inline即把min()指定为内联. inline int min(int first, int ...

  8. hdu_5104 Primes Problem()

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5104 rimes Problem Time Limit: 2000/1000 MS (Java/Oth ...

  9. 整数n的全排列

    第一道用搜索码的.得纪念一下 #include <iostream> #include <cstdio> #include <cstring> #include & ...

  10. python动态类型

    在python中,省去了变量声明的过程,在引用变量时,往往一个简单的赋值语句就同时完成了,声明变量类型,变量定义和关联的过程,那么python的变量到底是怎样完成定义的呢? 动态类型 python使用 ...