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上映,为了表示对杰克船长的喜爱,昨天闪现了几次模仿船长的走路姿势(哈哈哈,简直妖娆). 为了周天能去看电影,要赶紧 ...
随机推荐
- scrollify - 滚动条方式的全屏滚动
jQuery Scrollify Version Beta v1.0.5 Date:2017-04-25 23:45 源代码 (function($, window, document) { 'use ...
- 【译】巧用CSS变量实现自动前缀
转:https://www.h5jun.com/post/autoprefixing-with-css-variables-lea-verou.html 最近,当我在制作 markapp.io 这个小 ...
- iOS QQ分享图片无反应问题
受iOS 9 上 http 限制 需要在info.plist文件添加必要string <key>LSApplicationQueriesSchemes</key> <ar ...
- keynote 代码高亮
brew install highlight (同时会安装 Lua 和 Boost) highlight -K 18 -s Vampire -u 'utf-8' -O rtf test.html | ...
- Java实现网页抓取的一个Demo
这个小案例的话我是存放在我的github 上. 下面给出链接自己可以去看下,也可以直接下载源码.有具体的说明 <Java网页抓取>
- java中注解的使用
使用过ssh框架的人一定也使用过注解,尤其是在spring框架中,注解可谓是spring容器和AOP编程的重要环节.注解就是用于修饰类.全局变量.方法.参数或局部变量的接口,java中规定,注解的使用 ...
- 透过一道面试题来探探JavaScript中执行上下文和变量对象的底
在做面试题之前,我们先搞清楚两个概念 执行上下文(execution context) 变量对象(variable object) 执行上下文 我们都知道JavaScript的作用域一共分三种 全局作 ...
- Vue 组件之 Router
Vue 组件之 Router Vue 开发单页应用的时候,免不了使用Vue组件.在单页应用上如何进行组件切换? 结构如下图所示: 主页面包含Foo组件与Bar组件,在主页面中可以进行Foo与 Bar的 ...
- Sql的基础知识提升(二)
二.提升 1.说明:复制表(只复制结构,源表名:a 新表名:b) (Access 可用) 法一:select * into b from a where 1<>1(仅用于 SQlServe ...
- JavaSE(一)之类与对象
终于到了要学习面向对象程序设计了,其中可能很多东西以前都知道怎么去用,但是却不知道怎么来的,或者怎么样写会出错,所以今天总结起来. 一.OOP概述 Java的编程语言是面向对象的,采用这种语言进行编程 ...