多个Promise执行顺序
app.isLogin()
// 判断是否登录后
.then(res=>{
this.setData({
login: true
}, res2=>{
// 清空临时积分
return app.clearTempScore() // 返回Promise
})
})
.then(res => {
console.log('.then..............')
})
.catch(err=>{
console.log(err)
})
1、setData中返回Promise
会直接执行第二个.then(),即使app.clearTempScore返回的状态是pending(正常返回的Promise,状态是pending,不会执行.then())
因为setData是异步请求,会拿到 临时储物台 执行,此时,流水线上并没有 返回 Promise
所以,会顺序执行流水线上的第二个.then()
app.isLogin()
// 判断是否登录后
.then(res=>{ })
.then(res => {
console.log('.then..............')
})
.catch(err=>{
console.log(err)
})
2、第一个.then()中没有直接的 return 一个Promise,代码会顺序执行第二个.then()
3、第一个.then()中如果有直接的 return 一个Promise(流水线上return了一个Promise),代码才会 等待 return 的这个Promise,有了 resolve 或 reject 状态后, 再执行第二个.then()
4、如果Promise内部出错,并且内部reject了错误(如果没有reject错误,会直接报错),则这个Promise会寻找距离他最近的.catch()方法执行
如果Promise内部没有出错,则这个Promise会寻找距离他最近的.then()方法执行
如果app.isLogin()内部出错,并且内部reject了错误(如果没有reject错误,会直接报错),会执行距离他最近的(也就是最下边那个).catch()方法
如果app.isLogin()内部没有出错,会执行距离他最近的(紧挨着他的那个).then()方法
onLookPhone(){
app.isLogin()
.then(res=>{
return app.clearTempScore()
})
.then(res=>{
return app.getUserScore()
})
.then(res=>{
console.log('.then3')
})
.catch(err=>{
console.log(err)
})
},
多个Promise执行顺序的更多相关文章
- js 关于setTimeout和Promise执行顺序问题
js 关于setTimeout和Promise执行顺序问题 异步 -- Promise和setTimeout 执行顺序 Promise 和 setTimeout 到底谁先执行 定时器的介绍 Jav ...
- js,timeout,promise执行顺序
总结 macro-task包括:script(整体代码), setTimeout, setInterval, setImmediate, I/O, UI rendering. micro-task包括 ...
- 宏任务和微任务:setTimeout和Promise执行顺序
先以一道面试题做引子: 写出这段程序的输出内容: setTimeout(function(){ console.log(); },); new Promise(function(a,b){ conso ...
- 关于setTimeout和Promise执行顺序问题
先看一段代码 console.log('打印'+1); setTimeout(function(){ console.log('打印'+2); }) new Promise(function(reso ...
- Promise 执行顺序
加深印象 setTimeout(function() { console.log("timeout-start"); }, 200) // 改为100呢 console.log(& ...
- Promise对象及它在js中的执行顺序
关于Promise对象的学习及它的执行顺序 学习阮一峰老师的ES6入门后的记录 1.promise的定义 promise是一个对象,通常包裹着一个异步操作,promise对象提供一些接口的方法,返回一 ...
- Promise和setTimeout执行顺序 面试题
看到过下面这样一道题: (function test() { setTimeout(function() {console.log(4)}, 0); new Promise(function exec ...
- promise.then, setTimeout,await执行顺序问题
promise.then VS setTimeout 在chrome和node环境环境中均输出2, 3, 1, 先输出2没什么好说的,3和1顺序让人有些意外 原因: 有一个事件循环,但是任务队列可以有 ...
- 8张图让你一步步看清 async/await 和 promise 的执行顺序
摘要: 面试必问 原文:8张图帮你一步步看清 async/await 和 promise 的执行顺序 作者:ziwei3749 Fundebug经授权转载,版权归原作者所有. 为什么写这篇文章? 说实 ...
随机推荐
- Linux下查看文件编码及批量修改编码
查看文件编码在Linux中查看文件编码可以通过以下几种方式:1.在Vim中可以直接查看文件编码:set fileencoding即可显示文件编码格式.如果你只是想查看其它编码格式的文件或者想解决用Vi ...
- PYTHON 100days学习笔记004:循环结构
目录 Day04 - 循环结构 1. 循环结构的应用场景 2.for-in循环 3. while循环 4. 练习 4.1 输入一个数判断是不是素数. 4.2 输入两个正整数,计算最大公约数和最小公倍数 ...
- SpringBoot整合持久层技术-创建项目
新建项目 Pom.xml文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&q ...
- *【Python】【demo实验31】【练习实例】【使用turtle画小猪佩奇】
如下图小猪佩奇: 要求使用turtle画小猪佩奇: 源码: # encoding=utf-8 # -*- coding: UTF-8 -*- # 使用turtle画小猪佩奇 from turtle i ...
- JDK1.8 新特性(全)
原文链接:https://blog.csdn.net/qq_29411737/article/details/80835658
- Android MediaPlayer 在 STREAM_ALARM 中播放媒体
最近因为公司需求,要实现后台播放音频,同时广告机中的视频因为客户需求调至静音,不能通过修改系统的媒体音量来让音频发声. private MediaPlayer mediaPlayer; private ...
- 【weixin】微信支付---PC网站微信支付
一.PC网站支付 微信支付支持完成域名ICP备案的网站接入支付功能.PC网站接入支付后,可以通过JSAPI支付或Native支付,自行开发生成二维码,用户使用微信“扫一扫”来完成支付. 二.支付产品介 ...
- jvm自带的监控机制
Jdk为我们提供了查看java服务运行时的监控情况 1.如下图所示,打开指定目录下的jconsole.exe应用程序文件. 2.双击后跳出如下界面,可以看到,我们可以监视本地的,也可以监视远程服务.本 ...
- 完美解决Uncaught SyntaxError: Unexpected end of input
Unexpected end of input 的英文意思是“意外的终止输入” 他通常表示我们浏览器在读取我们的js代码时,碰到了不可预知的错误,导致浏览器 无语进行下面的读取 通常造成这种错误的原 ...
- zookeeper--为分布式应用提供协调服务
1.概述 zookeeper是一个开源的.分布式的.为分布式应用提供协调服务的Apache项目 zookeeper的工作机制 zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服 ...