Promise是一个构造函数,excutor是他的执行函数,同时也是构造函数的参数.

new Promise(excutor)

excutor有两个参数(resolve,reject)

Promise的三种状态

  • pending,Promise初始化时是该状态
  • fulfilled,Promise成功时是该状态,调用resolve
  • rejected,Promise失败时是该状态,调用reject

    Promise状态只能有pending => fulfilled/rejected, 一旦修改就不能再改变

使用方法

  1. promise.then(onFulfilled, onRejected)

    注意: 这样使用onRejected不会捕获到onFulfilled的异常.

    例如:
let promise = new Promise((resolve,reject)=>{
resolve(1)
})
promise.then((val)=>{
val.splice(0,1)
},(e)=>{
console.log("11");
})
// 错误信息
VM594:2 Uncaught (in promise) TypeError: val.splice is not a function
at <anonymous>:2:9
  1. promise.then(onFulfilled).catch(onRejected)

    注意: 这样可以捕获onFulfilled中的异常

    例如:
let promise = new Promise((resolve,reject)=>{
resolve(1)
})
promise.then((val)=>{
val.splice(0,1)
})
.catch((e)=>{
console.log("11");
})
// 输出 11

Promise.resolve

Promise.reject

Promise.all,全部为resolve才会调用

Promise.race

Promise.race,只要有一个promise对象进入 FulFilled 或者 Rejected 状态的话,就会继续进行后面的处理。

Promise了解的更多相关文章

  1. Javascript - Promise学习笔记

    最近工作轻松了点,想起了以前总是看到的一个单词promise,于是耐心下来学习了一下.   一:Promise是什么?为什么会有这个东西? 首先说明,Promise是为了解决javascript异步编 ...

  2. 路由的Resolve机制(需要了解promise)

    angular的resovle机制,实际上是应用了promise,在进入特定的路由之前给我们一个做预处理的机会 1.在进入这个路由之前先懒加载对应的 .js $stateProvider .state ...

  3. angular2系列教程(七)Injectable、Promise、Interface、使用服务

    今天我们要讲的ng2的service这个概念,和ng1一样,service通常用于发送http请求,但其实你可以在里面封装任何你想封装的方法,有时候控制器之间的通讯也是依靠service来完成的,让我 ...

  4. 闲话Promise机制

    Promise的诞生与Javascript中异步编程息息相关,js中异步编程主要指的是setTimout/setInterval.DOM事件机制.ajax,通过传入回调函数实现控制反转.异步编程为js ...

  5. 深入理解jQuery、Angular、node中的Promise

    最初遇到Promise是在jQuery中,在jQuery1.5版本中引入了Deferred Object,这个异步队列模块用于实现异步任务和回调函数的解耦.为ajax模块.队列模块.ready事件提供 ...

  6. Promise的前世今生和妙用技巧

    浏览器事件模型和回调机制 JavaScript作为单线程运行于浏览器之中,这是每本JavaScript教科书中都会被提到的.同时出于对UI线程操作的安全性考虑,JavaScript和UI线程也处于同一 ...

  7. JavaScript进阶之路——认识和使用Promise,重构你的Js代码

    一转眼,这2015年上半年就过去了,差不多一个月没有写博客了,"罪过罪过"啊~~.进入了七月份,也就意味着我们上半年苦逼的单身生活结束了,从此刻起,我们要打起十二分的精神,开始下半 ...

  8. 细说Promise

    一.前言 JavaScript是单线程的,固,一次只能执行一个任务,当有一个任务耗时很长时,后面的任务就必须等待.那么,有什么办法,可以解决这类问题呢?(抛开WebWorker不谈),那就是让代码异步 ...

  9. 浅谈Angular的 $q, defer, promise

    浅谈Angular的 $q, defer, promise 时间 2016-01-13 00:28:00  博客园-原创精华区 原文  http://www.cnblogs.com/big-snow/ ...

  10. angular学习笔记(二十八-附2)-$http,$resource中的promise对象

    下面这种promise的用法,我从第一篇$http笔记到$resource笔记中,一直都有用到: HttpREST.factory('cardResource',function($resource) ...

随机推荐

  1. js 中的值类型和引用类型

    javascript中值类型(基本类型):number,string,bool,undefined,null(这5种基本数据类型是按值访问的,因为可以操作保存在变量中的实际的值) 引用类型:对象(Ob ...

  2. .net Core 调用EF Core 爬坑

    .net Core 中调用 EF Core项目 首先得建一个类库供.net Core 的主项目引用:其次,在.net Core 中做注入:最后,在页面中调用 1.类库项目中的操作 1.新建类库项目 2 ...

  3. 切换阿里巴巴开源镜像站镜像——Kali镜像

    参考链接: 阿里巴巴开源镜像站 镜像切换参考链接:阿里云Kali镜像源 安装Kali Linux系统参考链接:使用VMware虚拟机安装kali Linux 一.打开终端命令窗口 二.进入source ...

  4. K8S搭建自动化部署环境 Jenkins下载、安装和启动

    镜像下载.域名解析.时间同步请点击 阿里云开源镜像站 一.jenkins 下载 jenkins下载地址:https://jenkins.io/zh/download/ 如下图,左边是稳定版本,右边是每 ...

  5. Linux不常用参数(持续更新)

    一.系统级别 1.1 > 使其他机器无法ping通你的主机 echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all---------------- ...

  6. shellLab实验报告

    一.预备知识 阅读课本CSAPP的第八章后完成本次实验,要求熟练掌握以下内容: 进程的概念.状态以及控制进程的几个函数(fork,waitpid,execve). 信号的概念,会编写正确安全的信号处理 ...

  7. Arduino UNO开发板、Arduino CNC Shield V3.0扩展板、A4988驱动板、grbl固件使用教程

    前言 CNC Shield V3.0可用作雕刻机,3D打印机等的驱动扩展板,板上一共有4路步进电机驱动模块的插槽,可驱动4路不进电机,而每一路步进电机都只需要2个IO口,也就是说,6个IO口就可以很好 ...

  8. 学习廖雪峰的Git教程4--继续学习分支管理

    查看分支 git branch -a 查看远程分支 git branch 查看本地分支 创建分支 git checkout -b branch-name 在远程创建一个属于自己的分支 删除分支 删除本 ...

  9. SpringBoot:自定义注解实现后台接收Json参数

    0.需求 在实际的开发过程中,服务间调用一般使用Json传参的模式,SpringBoot项目无法使用@RequestParam接收Json传参 只有@RequestBody支持Json,但是每次为了一 ...

  10. Springmvc入门基础(四) ---参数绑定

    1.默认支持的参数类型 处理器形参中添加如下类型的参数处理适配器会默认识别并进行赋值. 除了ModelAndView以外,还可以使用Model来向页面传递数据, Model是一个接口,在参数里直接声明 ...