多个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经授权转载,版权归原作者所有. 为什么写这篇文章? 说实 ...
随机推荐
- scrapy生成json中文为ASCII码解决
修改pipelines.py 即可 修改内容如下: import json import codecs import os class BaiduNewsPipeline(object): #增加的 ...
- kafka安装使用配置1.2
进入cd /usr/local/flume/conf/ vi kafka.conf 配置 agent.sources=s1 agent.channels=c1 agent.sinks=k1 agent ...
- SqlServer判断表中某列是否包含中文,英文,纯数字
原文:SqlServer判断表中某列是否包含中文,英文,纯数字 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog ...
- winform 中如何获取debug目录的路径
项目中需要在debug启动目录创建文件夹,所以先获取debug路径: var debugPath = System.AppDomain.CurrentDomain.BaseDirectory;
- HORSE PILL--一种新型的linux rootkit
资料 ppt:https://www.blackhat.com/docs/us-16/materials/us-16-Leibowitz-Horse-Pill-A-New-Type-Of-Linux- ...
- Redis 键空间事件通知
出处: 使用Redis完成定时任务 场景 使用Java做过项目的人大概都用过定时器.一般来说,项目里订单模块和评论模块,都会涉及到定时任务执行.比如说: 用户下订单后,需要在5分钟内完成支付,否则 ...
- 命名规范 camel case, pascal case, hyphen
2019-11-08 refer : https://ux.stackexchange.com/questions/43174/update-vs-modify-vs-change-create-v ...
- Java反射理解(五)-- 方法反射的基本操作
Java反射理解(五)-- 方法反射的基本操作 方法的反射 1. 如何获取某个方法 方法的名称和方法的参数列表才能唯一决定某个方法 2. 方法反射的操作 method.invoke(对象,参数列表) ...
- spring boot 学习笔记(三)之 配置
一:概述 在Spring boot 中根据业务需求,我们往往会在不同地方配置我们所需的key-value 配置项,配置文件存在不同的地方的场景如下: (1) 默认存在 application.prop ...
- postpreSQL和oracle数据库的递归
oracle: --包含自身 select * from sec_org start with org_id ='9767FA56D52680AEE043C0A8670580AE' --开始节点 co ...