Promise.resolve()与Promise
//Promise.resolve()和Promise.reject()常用来生成已经被决议为失败或者成功的promise案例
//Promise.reject()简单一些,不管传给它什么值,它决议为失败后就会直接把这个值传递过来
一、Promise.resolve
1.传递一个普通的值(比如字符串,数字等等)
let p1 = new Promise(resolve => {
resolve('成功');
})
//和上面是等价的
let p2 = Promise.resolve('成功'); //会直接决议为成功并把这个值传递过去
2.传递一个promise实例
let cn = new Promise( resolve =>{
resolve('耶')
})
//直接返回传递进去的promise
let p = Promise.resolve(cn); //这里直接将cn实例返回给了p
p.then(data => void console.log(data)) //后打印结果为耶
console.log( p === cn) //先打印true
3、
传递一个thenable对象(和类数组的概念有些相似)
//鸭子类型:一只鸡如果看起来像鸭子,那么它就是鸭子。在鸭子类型中,关注的不是对象的类型本身,而是他如何使用的。
//具有then方法的对象,看着像promise,那就把它转成promise,保留then
let obj = { //obj就是一个thenable对象
then(cb){
console.log('我被执行了'); //先打印'我被 执行了'
cb('哼')
},
oth(){
console.log('我被抛弃了') //不打印
}
}
//立即执行then方法
Promise.resolve(obj).then(data => {
console.log(data) //打印出'哼'
})
//总结:传进thenable对象时,会立即执行then方法,如果then方法中有回调,也会在thenable对象中被调用
二、Promise.reject
Promise.reject({ then() { console.log(1) } })
.then( () =>{
console.log('我不会被执行')
}, e => {
console.log(e) //不管在reject()中传递什么值,在这里拿到的就是什么值
})
三、
Promise在决议之后是异步去做他接下来要去做的事情
//打印结果按顺序为 123465
console.log(1);
let pp = new Promise(resolve => {
console.log(2);
resolve();
console.log(3);
})
console.log(4);
p.then( () =>{
console.log(5); //异步是最后执行的
})
console.log(6)
//总结:一般情况下,在当前这一轮的事件循环中,异步任务肯定是在同步任务之后执行的
四、把同步的任务转成异步任务
function createAsyncTask(syncTask){
return Promise.resolve(syncTask).then(syncTask => syncTask())
}
createAsyncTask( () =>{
console.log('我变成了异步任务') //第二输出
return 1+1
}).then(res => {
console.log(res); //最后输出
})
console.log('我是同步任务') //最先输出
Promise.resolve()与Promise的更多相关文章
- Promise.resolve的作用
Promise.resolve方法有下面三种形式: Promise.resolve(value); Promise.resolve(promise); Promise.resolve(thenable ...
- AngularJS进阶(三十六)AngularJS项目开发技巧之利用Service&Promise&Resolve解决图片预加载问题(后记)
AngularJS项目开发技巧之利用Service&Promise&Resolve解决图片预加载问题(后记) 前言 在"AngularJS项目开发技巧之图片预加载" ...
- ES6中的Promise.resolve()的作用
var foo = { then: (resolve, reject) => resolve('foo') }; var resolved = Promise.resolve(foo); 相当于 ...
- Promise.resolve解析
总结自:https://blog.csdn.net/lq15310444798/article/details/81275278 Promise.resolve返回一个Promise实例 参数分4种情 ...
- [转载]es6 Promise.resolve()方法
es6 Promise.resolve()方法 2018-01-27 22:29:06 ixygj197875 阅读数 16925更多 分类专栏: ES6标准入门 (阮一峰) ES6标准入门 Pr ...
- Promise.resolve( data)与Promise.reject( data )
Promise.resolve( data)与Promise.reject( data ) 常用来生成已经决议失败或成功的promise实例: 1.Promise.reject(data)不管传递的是 ...
- Promise.resolve(x)中x有几种情况
ps:下面参数说的是Promise.resolve(x)中的x 一共四种情况: 1.如果参数是Promise实例本身,则抛出错误 2.如果参数是一个promise对象,则then函数的执行取决于这个参 ...
- Promise(resolve,reject)的基本使用
什么是Promise? Promise是一个构造函数,其原型上有 then.catch方法,还有reslove,reject等静态方法.通过创建Promise实例,可以调用Promise.protot ...
- 理解和使用Promise.all和Promise.race
一.Pomise.all的使用 Promise.all可以将多个Promise实例包装成一个新的Promise实例.同时,成功和失败的返回值是不同的,成功的时候返回的是一个结果数组,而失败的时候则返回 ...
随机推荐
- 架构之:REST和HATEOAS
目录 简介 HATEOAS简介 HATEOAS的格式 HATEOAS的Spring支持 总结 简介 我们知道REST是一种架构方式,它只是指定了六种需要遵循的基本原则,但是它指定的原则都比较宽泛,我们 ...
- Innodb 锁的介绍
如下博文是参考如下博文内容,再加整理. http://blog.chinaunix.net/uid-24111901-id-2627857.html http://blog.csdn.net/wang ...
- 第一篇 -- Sprint Tool Suite配置和Hello World编写
首先需要安装 1. Sprint Tool Suite(本次所用版本:spring-tool-suite-3.8.3.RELEASE-e4.6.2-win32-x86_64) 2. Tomcat(本次 ...
- Tom_No_01 IDEA tomcat 源码环境搭建
1.下载源码 apache-tomcat-8.5.50-src 2.下载源码 放D盘,解压后根目录新建pom.xml和catalina-home pom.xml文件中内容为 <?xml vers ...
- phpmyadmin error:#2002 - 服务器没有响应 (或者本地 MySQL 服务器的套接字没有正确配置)
1. 将 "phpMyAdmin/libraries"文件夹下的config.default.php文件中的$cfg['Servers'][$i]['host'] = 'local ...
- JSON数据的HTTP Header应该怎么标记?
第一种 header('Content-type: application/json'); 另一种 header('Content-type: text/json');
- 论文笔记:(ICCV2019)KPConv: Flexible and Deformable Convolution for Point Clouds
目录 摘要 一.引言 二.相关工作 投影网络 图卷积网络 逐点多层感知器网络 点卷积网络 三.核点卷积 3.1由点定义的核函数 3.2刚性的或可变形的核 3.3核点网络层 3.4核点网络架构 四.实验 ...
- Docker 实践及命令梳理
文档 Docker Reference Documentation Docker 从入门到实践 [中文] 安装 安装 Docker,设置开机启动,然后配置阿里云镜像加速 1. 安装 Docker Do ...
- 知乎1578赞:Android 中为什么需要 Handler?
要理解 Handler,就得先理解 Android 的 Message 机制. 这里以用户滑动微信朋友圈为例,讲解一下 Android 的 Message 机制是怎么运行的,Message 机制中的各 ...
- NTP 集群简略部署指南
NTP 集群简略部署指南 by 无若 1. NTP 简介 网络时间协议(英语:Network Time Protocol,简称NTP)是在数据网络潜伏时间可变的计算机系统之间通过分组交换进行时钟同步的 ...