promise使用方法
代码报错会走向失败时的回调
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使用方法的更多相关文章
- js回调地域 和 用promise解决方法
回调地狱: function3({cb3()}){ function2({cb2(cb3)}){ //cb2触发了cb3,并传值 function1({cb1(cb2)}){ //cb1触发了cb2, ...
- [转载]es6 Promise.resolve()方法
es6 Promise.resolve()方法 2018-01-27 22:29:06 ixygj197875 阅读数 16925更多 分类专栏: ES6标准入门 (阮一峰) ES6标准入门 Pr ...
- es6 Promise.reject()方法
es6 Promise.reject()方法:https://blog.csdn.net/ixygj197875/article/details/79188195
- 如何使用 js 实现一个 Promise.all 方法 PromiseAll
如何使用 js 实现一个 Promise.all 方法 PromiseAll Promise.all PromiseAll https://developer.mozilla.org/en-US/do ...
- promise.all方法合并请求接口的两个值
function promise1 = new Promise((resolve,reject)=>{ return result1 }) function promise2 = new Pro ...
- ES6中的Promise使用方法与总结
在javascript中,代码是单线程执行的,对于一些比较耗时的IO操作,都是通过异步回调函数来实现的. 但是这样会存在一个问题,当下一个的操作需要上一个操作的结果时,我们只能把代码嵌到上一个操作的回 ...
- Promise.then方法的执行顺序例题分析
1. 当Promise对象作为resolve的参数时 const p = Promise.resolve(); const p1 = Promise.resolve(p); //就是p const p ...
- 实现一个promise.all方法
思路: 1:首先明白all的用法 2:promise.all可以接受一个由promise数组作为参数,并且返回一个promise实例, 3:promise.all([a,b,c...]).then方法 ...
- Promise (2) 基本方法
"I'm Captain Jack Sparrow" 加勒比海盗5上映,为了表示对杰克船长的喜爱,昨天闪现了几次模仿船长的走路姿势(哈哈哈,简直妖娆). 为了周天能去看电影,要赶紧 ...
随机推荐
- python 学习源码练习(2)——简单文件读取
#文件创建 #!/usr/bin/python3 'makeTextFile.py--create text file' import os ls = os.linesep #get filename ...
- 从Unity中的Attribute到AOP(一)
首先来看一下微软官方对Attributes(C#)的定义: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/conce ...
- 使用jemeter手工编写注册、登陆脚本 运用 fiddler (二)
接着上一篇讲 我们需要添加关联来获取我们想要的动态值 如果做过自动化测试的人都知道 不管是注册或者登陆是时候都会有一个 类似于动态码的一个东西 只有这个东西验证成功 我们才能注册 或者 登陆 那 ...
- 用Vue中遇到的问题和处理方法
用Vue开发项目有一段时间,在实际项目中遇到一些问题,在里把问题记录下来,并附上解决方案,给遇到同样的问题的码友提供一个解决思路吧: 测试部抛出问题一:在Vue1.0路由vue-router中,当点击 ...
- JavaScript 数组对象的去重
JavaScript数组去重 1.原型去重法.通过prototype找到数组的源性对象Array,在数组的原型上添加unique()方法.需要使用的时候使用 点 " . " 进行连 ...
- 在mac下使用终端命令通过ssh协议连接远程linux系统,代替windows的putty
指令:ssh username@server.address.com 事例:wangmingdeMacBook-Pro:~ xxxxxxxxxx$ ssh root@XXXX.net The auth ...
- Gym 100952B&&2015 HIAST Collegiate Programming Contest B. New Job【模拟】
B. New Job time limit per test:1 second memory limit per test:64 megabytes input:standard input outp ...
- sql server 2008 r2 数据库操作时提示 9002错误“事物日志已满”问题
事务日志截断 若要避免数据库的事务日志被填满,例行备份至关重要.在简单恢复模式下,备份了数据库后会自动截断日志,而在完整恢复模式下,只有备份了事务日志后方才截断日志.但是,截断过程有时也可能发生延迟. ...
- C/C++之循环结构
C语言中提供四种循环,即goto循环.while循环.do…while循环和for循环.四种循环可以用来处理同一问题,一般情况下它们可以互相代替换,但一般不提倡用goto循环,因为强制改变程序的顺序经 ...
- MongoDb在windows下的安装与以auth方式启用服务
一.下载安装 1.去官网上下载适合自己电脑的MongoDB版本 下载MongoDB 2.安装MongoDB 安装还是比较简单,按照步骤一步一步往下走就可以了. 3.启动MongodDB 安装完成之后 ...