笔记:promise实例+注释
//////////////////////////////////////////////
var data = [1,2,3,4];
var promise = new Promise((resolve, reject) => {
console.log('init');
resolve(data); //成功的时候传入的参数data
reject(error); //失败的时候传入的参数error
});
promise
.then((data) => {
console.log(data); //成功
return data; //返回data给下一个then()
})
.then((val) => { //val指上面返回的data,所以数据与命名无关
val.map((item) => {
console.log(item); //成功
});
})
.then(() => {
throw new Error('error!!!'); //抛出错误
})
.catch((error) => {
console.log('error '+ error); //捕获错误,让程序继续运行
})
.then((data) => {
console.log(typeof data); //undefined,因为data没有传过来
})
///////////////////////////////////////////工作流
let data = 'this is data'
function asyncFunc(data) {
return new Promise((resolve, reject) => {
resolve(data);
reject(error);
});
}
asyncFunc(data)
.then((data) => {
console.log(data);
})
.catch((error) => {
console.log(error);
})
////////////////////////////ajax与异步操作
function getUrl(url) {
return new Promise((resolve, reject) => {
let req = new XMLHttpRequest();
req.open('GET', url, true);
req.onload = () => {
req.status === 200
? resolve(req.responseText)
: reject(new Error(req.statusText))
}
req.send();
});
}
let url = 'http://httpbin.org/get';
// 异步操作,resolve状态后不会立即执行then()
getUrl(url) // 1
.then((data) => { // 7/8
console.log(data);
})
.catch((error) => {
console.error(error);
})
console.log('1'); // 2
setTimeout(() => { // 5
console.log('2');
}, 0);
setTimeout(() => { // 6
console.log('3');
}, 0);
setTimeout(() => { // 7/8 根据时间而定,等待时间长会先执行then()
console.log('4');
}, 1000);
console.log('5'); // 3
console.log('6'); // 4
//////////////////////////////////////
笔记:promise实例+注释的更多相关文章
- es6学习笔记--promise对象
Promise对象是为了简化异步编程.解决回调地狱情况 Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果.从语法上说,Promise 是一个对象,从它可 ...
- js-ES6学习笔记-Promise对象(2)
1.Promise实例具有then方法,也就是说,then方法是定义在原型对象Promise.prototype上的.它的作用是为Promise实例添加状态改变时的回调函数. 2.Promise.pr ...
- js-ES6学习笔记-Promise对象
1.Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大. 2.所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作) ...
- expect学习笔记及实例详解【转】
1. expect是基于tcl演变而来的,所以很多语法和tcl类似,基本的语法如下所示:1.1 首行加上/usr/bin/expect1.2 spawn: 后面加上需要执行的shell命令,比如说sp ...
- 《深入理解ES6》笔记—— Promise与异步编程(11)
为什么要异步编程 我们在写前端代码时,经常会对dom做事件处理操作,比如点击.激活焦点.失去焦点等:再比如我们用ajax请求数据,使用回调函数获取返回值.这些都属于异步编程. 也许你已经大概知道Jav ...
- springJDBC学习笔记和实例
前言:相对于Mybatis(ibatis),个人感觉springJDBC更灵活,主要实现类JdbcTemplate:它替我们完成了资源的创建以及释放工作,从而简化了我们对JDBC的使用.它还可以帮助我 ...
- PHP正则表达式笔记和实例
转自: https://www.cnblogs.com/yafei236/p/4168290.html 本文主要介绍如何在PHP使用正则表达式,并附带几个实例. 这两天工作用到了正则表达式,发现自己 ...
- python笔记3:注释命名风格
6.注释: 行注释采用 # 开头,多行注释使用三个单引号 (''') 或三个双引号 ("' '"),注释不需要对齐 三引号让程序员从引号和特殊字符串的泥潭里面解脱出来,自始至终保 ...
- promise实例小球运动
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
随机推荐
- JMS基础篇
首先我们需要下载 ActiveMQ:http://activemq.apache.org/. 启动 ActiveMQ 服务:解包下载的 ActiveMQ >进去其bin 目录>双击 act ...
- vue2.0开发时导入组件时出错
导入自定义组件时出现了如下错误 ERROR Failed to compile with 1 errors 12:35:41 This dependency was not found: * comp ...
- POJ 3683 Priest John's Busiest Day[2-SAT 构造解]
题意: $n$对$couple$举行仪式,有两个时间段可以选择,问是否可以不冲突举行完,并求方案 两个时间段选择对应一真一假,对于有时间段冲突冲突的两人按照$2-SAT$的规则连边(把不冲突的时间段连 ...
- 链表回文判断(C++)
题目描述: 对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构. 给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构.保证链表长度小于等 ...
- Mac下安装php5.6/7.1
安装环境 OS X EI Capitan 10.11.4 Homebrew安装 homebrew是一个类似于ubuntu中apt-get的一个软件管理器,安装比较简单,在命令行中输入如下代码: rub ...
- word在页眉中插入页码
编辑页眉时,插入-页码-当前位置-普通数字
- python函数的面向对象——面向对象设计
通过几个函数式编号演进,理解面向对象设计 def01.py dog1 = { 'name':'元昊', 'gender':'母', 'type':'藏獒' } dog2 = { 'name':'李李' ...
- PHP中单引号与双引号的区别
在PHP中,字符串的定义可以使用英文单引号' ',也可以使用英文双引号" ". 一般情况下两者是通用的.但双引号内部变量会解析,单引号则不解析. PHP允许我们在双引号串中直接包含 ...
- PHP opcache扩展安装
下面是我在PHP 5.4下的安装方法: https://pecl.php.net/get/zendopcache-7.0.5.tgz tar xzf zendopcache-7.0.5.tgz cd ...
- 如何使用 VS2015 进行远程调试?
VisualStudio\Microsoft Visual Studio 14.0\Common7\IDE\Remote Debugger 直接复制 Remote Debugger 文件,里面包含了 ...