es6的promise用法详解
es6的promise用法详解
- promise 原理
- promise是es6的异步编程解决方案, 是es6封装好的对象;
- 一个promise有三种状态:Pending(进行中)、Resolved(已完成,又称 Fulfilled)和Rejected(已失败);
- 缺点:一旦执行无法取消;无回掉函数,promise只在内部报错;当处于pending状态时无法监控其是刚开始还是即将结束
用法测试
```javascript
//方法编写
function getjson (num){
var timer=null
var promising=new Promise(function(resolve,reject){
if(!num){
reject("num don't find")
}
timer=setInterval(function(){
if(num<5){
num++
}else{
resolve(num)
clearInterval(timer)
}
},1000)
});
return promising;
}
//调用方式1 成功
getjson(1).then(function(json){
console.log(222)
console.log(json)
},function(error){
console.log(111)
console.log(error)
})
//调用方式2 成功
getjson(1).then(function(json){
console.log(222)
console.log(json)
}).catch(function(error){
console.log(111)
console.log(error)
})
//调用方式3 失败
getjson(1).then(function(json){
console.log(222)
console.log(json)
}).catch(function(error){
console.log(111)
console.log(error)
})
//输出结果是5秒之后打印出222和json的值```
- 注意点
- 必须new promise对象,同时传递resolve,reject两个参数,resolve是成功后的调用,reject是失败后的调用;
- 调用方式2优于调用方式1,理由是Promise 对象的错误具有“冒泡”性质,会一直向后传递,直到被捕获为止。也就是说,错误总是会被下一个catch语句捕获,第二种写法可以捕获前面then方法执行中的错误,也更接近同步的写法(try/catch);
- done()和finally()方法在有的浏览器可能不存在。打印执行后的getjson()对象,在原型里没有找到这两个方法,原因未明;
源码:git@github.com:Frankltf/js-promise.git
es6的promise用法详解的更多相关文章
- ES6之Promise用法详解
一 前言 本文主要对ES6的Promise进行一些入门级的介绍.要想学习一个知识点,肯定是从三个方面出发,what.why.how.下面就跟着我一步步学习吧~ 二 什么是Promise 首先是what ...
- Es6 Promise 用法详解
Promise是什么?? 打印出来看看 console.dir(Promise) 这么一看就明白了,Promise是一个构造函数,自己身上有all.reject.resolve这几个眼熟的方 ...
- promise用法详解
es6的promise可谓是异步书写的一大福音,过去异步js书写是函数嵌套函数的方式,promise出现后书写异步js代码就变得美观得多了 以前的写法:回调函数不停嵌套 ajax('/banners' ...
- ES6 Promise用法详解
What is Promise? Promise是一个构造函数,接受一个参数(Function),并且该参数接受两个参数resolve和reject(分别表示异步操作执行成功后的回调函数.执行失败后的 ...
- JS - Promise使用详解--摘抄笔记
第一部分: JS - Promise使用详解1(基本概念.使用优点) 一.promises相关概念 promises 的概念是由 CommonJS 小组的成员在 Promises/A 规范中提出来的. ...
- Vue1.0用法详解
Vue.js 不支持 IE8 及其以下版本,因为 Vue.js 使用了 IE8 不能实现的 ECMAScript 5 特性. 开发环境部署 可参考使用 vue+webpack. 基本用法 1 2 3 ...
- C#中string.format用法详解
C#中string.format用法详解 本文实例总结了C#中string.format用法.分享给大家供大家参考.具体分析如下: String.Format 方法的几种定义: String.Form ...
- @RequestMapping 用法详解之地址映射
@RequestMapping 用法详解之地址映射 引言: 前段时间项目中用到了RESTful模式来开发程序,但是当用POST.PUT模式提交数据时,发现服务器端接受不到提交的数据(服务器端参数绑定没 ...
- linux管道命令grep命令参数及用法详解---附使用案例|grep
功能说明:查找文件里符合条件的字符串. 语 法:grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>] ...
随机推荐
- Android应用框架中的四个核心要点
Android应用框架中的四个核心要点:活动(Activity).消息(Intent).视图(View).任务(Task) (一)活动Activity Android系统内部有专门的Activity堆 ...
- freemarker<二>
一.FreeMarker模板文件组成 ①.文本,直接输出的部分 ②.注释,即<#--...-->格式不会输出 ③.FTL指令:FreeMarker指令,和HTML标记类似,名字前加#予以区 ...
- JavaScript的bind方法
bind的机制 var foo = function(){} var bar = foo; console.log(foo === bar) //true /*-------------------- ...
- C# 将PDF转为Word、Html、XPS、SVG、PCL、PS——基于Spire.Cloud.PDF
Spire.Cloud.PDF提供了接口PdfConvertApi可用于将PDF文档转换为其他格式文档,如Word(docx/doc).Html.XPS.SVG.PCL.PS.Png以及XPS转成PD ...
- Kerrigan:配置中心管理UI的实现思路和技术细节
去年写过一篇文章『中小团队落地配置中心详解』,介绍了我们借助etcd+confd实现的配置中心方案,这是一个对运维友好,与开发解耦的极佳方案,经过了一年多的实践也确实帮我们解决了配置文件无版本.难回滚 ...
- 13.利用pymysql创建变量类型的表名解说
在练习爬虫爬取数据时,想将爬取的数据用pymysql存储到数据库中,并且存储时的表名是一个变量,但在写完代码运行后经常出面1064的错误代码,在网上查找相关解决方法,但一直找不到完美的解决方法, 通过 ...
- 一起来立Flag吧!超炫的数据图表分析 2020 年 Java 技术趋势
引言 2020 来了,第一批 00 后已经 20 岁了,95 后也到了晚婚的年龄,员外的头发也越来越少了,新的一年大家有立下了哪些 Flag ?小伙伴们别急着立 Flag,让员外帮你分析一下哪些技术正 ...
- css label两端对齐
上面这种效果很常见,实现的代码如下: html部分 <ul> <li class="detail_item"> <span class="d ...
- ios 页面滑动到底部无法往上滚的问题
简单说明:当h5端使用vue-infinite-scroll 插件 做滚动加载 如:页面布局 <header></header> <div ...
- Sample Code之Take a screenshot of a SceneView
周末事情太多了,以后就工作日发布随笔吧.周末的话,看心情,也许也会发~ 今天的实例代码解析是Take a screenshot of a SceneView,也就是获取快照,话不多说,进入正题. 首先 ...