我写了三个单元块,分别对应三种业务场景

let query;
query = (url) => {
url=url||"传递的参数为空";
return new Promise((resolve,reject) => {
setTimeout(() => {
console.log(url);
if(true){
resolve("我是promise执行后传递过来的数据");
}else{
reject();
} }, 3000)
}).catch((error)=>{console.log(error)});
};
//基本链式调用
//直接传入query会取上一个promise传递过来的参数,使用()=>query()会传递空参数,其他的就传递相应的参数
function basicChain(){
query("test1")
.then(query)
.then(()=>"then 传递的参数")
.then((data)=>query(data))
.then(()=>query())
.then(()=>query("test2"))
.then(()=>query("test3"))
} //按照一定顺序循环调用
function loopChain(){
let queryloop=Promise.resolve(0);
for(let j=0;j<10;j++){
queryloop=queryloop.then(()=>query("test"+j));
}
} //无顺序执行promise;
function unsortChain(){
let arrCreate=()=>{
let arr=[];
for(let i=1;i<11;i++){
arr.push(query("test"+i));
}
return arr;
}
let arr=arrCreate();
Promise.all(arr)
.then(()=>{console.log("promise 全部执行了")})
.catch(function(error){console.log(error)});
} 登录小逻辑
<script>
let status = 1;
let userLogin = (resolve, reject) =>{
setTimeout(()=>{
if(status == 1){
resolve({data:'登录成功', msg:'xxx', token:'xxsadfsadfas'});
}else{
reject('失败了');
}
},2000);
}; let getUserInfo = (resolve, reject) =>{
setTimeout(()=>{
if(status == 1){
resolve({data:'获取用户信息成功', msg:'asdfasdf', token:'xxsadfsadfas'});
}else{
reject('失败了');
}
},1000);
} new Promise(userLogin).then(res=>{
console.log('用户登录成功');
return new Promise(getUserInfo);
}).then(res=>{
console.log('获取用户信息成功');
console.log(res);
})
</script>

  

promise思考的更多相关文章

  1. webpack+babel项目在IE下报Promise未定义错误引出的思考

    低版本浏览器引起的问题 最近开发一个基于webpack+babel+react的项目,一般本地是在chrome浏览上面开发,chrome浏览器开发因为支持大部分新的js特性,所以一般不怎么需要poly ...

  2. iOS 中的 promise 模式

    1.概述 异步编程 App 开发中用得非常频繁,但异步请求后的操作却比较麻烦.Promise 就是解决这一问题的编程模型.其适用于 延迟(deferred) 计算和 异步(asynchronous)  ...

  3. ES6的promise对象应该这样用

    ES6修补了一位Js修真者诸多的遗憾. 曾几何时,我这个小白从js非阻塞特性的坑中爬出来,当我经历了一些回调丑陋的写法和优化的尝试之后,我深深觉得js对于多线程阻塞式的开发语言而言,可能有着其太明显的 ...

  4. 细嗅Promise

    读完这篇文章,预计会消耗你 40 分钟的时间. Ajax 出现的时候,刮来了一阵异步之风,现在 Nodejs 火爆,又一阵异步狂风刮了过来.需求是越来越苛刻,用户对性能的要求也是越来越高,随之而来的是 ...

  5. ES6新特性之 promise

    新的ES6中引入了promise的概念,目的是让回调更为优雅.层层嵌套的回调会让javascript失去美感和可读性,同时javascript也推荐采用链式的方式去书写函数调用.于是Promise就应 ...

  6. Angularjs promise对象解析

    1.先来看一段Demo,看完这个demo你可以思考下如果使用$.ajax如何处理同样的逻辑,使用ng的promise有何优势? var ngApp=angular.module('ngApp',[]) ...

  7. js promise chain

    新的标准里增加了原生的Promise. 这里只讨论链式使用的情况,思考一下其中的细节部分. 一,关于 then() 和 catch() 的复习 then() 和 catch() 的参数里可以放置 ca ...

  8. 关于NodeJS的思考

    对于NodeJS来说传统程序员比较陌生,初看以为是什么前端框架,其实并不是前端框架.传统的Javascript只能跑在浏览器中,但是一位叫Ryan Dahl的开发者灵感一来,为什么Javascript ...

  9. 一次Promise 实践:异步任务的分组调度

    起因是在工作中遇到一个问题,可以用一个二维数组简单描述: [[1,2,3],[4,5,6],[7,8,9]] 这里每个数字都代表“一个异步计算任务”, 每个子数组把1个或多个计算任务划分成组,要求是: ...

随机推荐

  1. 并发模型(二)——Master-Worker模式

    Master-Worker模式是常用的并行模式之一,它的核心思想是,系统有两个进程协作工作:Master进程,负责接收和分配任务:Worker进程,负责处理子任务.当Worker进程将子任务处理完成后 ...

  2. 设置VMware Player中的虚拟机和宿主机共享文件

    设置VMware Player中的虚拟机和宿主机共享文件 试验环境: 虚拟机软件:VMware Player 6.0.3 宿主机os:windows7 虚拟机os:centos6.6(32位)   完 ...

  3. objc变量的获取

    [objc变量的获取] C++成员变量通过偏移来寻找,速度极快.But Objc中的变量通过方法调用来寻找,方法首先根据变量名,找到ivar_t,然后在ivar_t对象中取出偏移,再用此偏移来取值(这 ...

  4. dokuwiki安装问题

    工作了几年,虽然在程序员这个道路上才算开始,希望以后能够有所成长,为了把平时遇到的技术问题,记录下来,第一个想到的就是写wiki,博客虽然创建了许久,但是没有坚持写下去,在网上找了许多的wiki程序, ...

  5. centos7 qt之程序编译 cant start process “cmake”

    之所以出现这个问题,是由于qt内置的cmake与系统已安装的cmake命令冲突.解决的方法是,在build里将cmake命令加上绝对路径. 问题得以解决.

  6. IDEA03 连接数据库、自动生成实体类

    1 版本说明 JDK:1.8 MAVEN:3.5 SpringBoot:2.0.4 IDEA:旗舰版207.2 MySQL:5.5 2 利用IDEA连接数据库 说明:本案例以MySQL为例 2.1 打 ...

  7. 383. Ransom Note 在字典数组中查找笔记数组

    [抄题]: Given an arbitrary ransom note string and another string containing letters from all the magaz ...

  8. libcurl用法

    本文以向百度搜索开放平台搜索关键字所对应的推荐搜索条目为例子: url:http://m.baidu.com/su?wd=%s&action=opensearch&ie=utf-8 ( ...

  9. ubuntu在命令行下同步时间

    1. 修改 /etc/timezone的时钟为UTC时钟. echo "Asia/Shanghai" > /etc/timezone 2.修改时区 $sudo cp /usr ...

  10. pandas map, apply, applymap区别

    map只对一个序列而言的. apply只是整个dataframe上任意一列或多列,或者一行或多行, 即可在任意轴操作. 在一列使用apply时,跟map效果一样. 多列时只能用apply. apply ...