Promise对象和async函数
Promise对象
//1开始
function fna(){
console.log('1开始');
var p = new Promise(function(resolve, reject){ //做一些异步操作
setTimeout(function(){
console.log('1完毕!');
resolve('进行2');//完成(Rejected)
}, 6000);
// setTimeout(function(){
// console.log('1失败!');
// reject('1没有完成');//失败
// }, 1000);
});
return p;
} //2开始
function fnb(data){
console.log('2开始' + data);
var p = new Promise(function(resolve, reject){ //做一些异步操作
setTimeout(function(){
console.log('2完毕!');
resolve('进行3');
}, 2000);
});
return p;
}
//3开始
function fnc(data){
console.log('3开始' + data);
var p = new Promise(function(resolve, reject){ //做一些异步操作
setTimeout(function(){
console.log('3完毕!');
resolve('123都完成');
}, 2000);
});
return p;
} fna()
.then(function(data){ //成功的 return fnb(data);
})
.catch(function(data){ //失败的
console.log(data );
})
.then(function(data){
return fnc(data);
})
.then(function(data){
//throw new Error('发现错误!');//捕捉错误
console.log(data);
});
结果:

.all()方法
function cutUp(){
console.log('1开始');
var p = new Promise(function(resolve, reject){ //做一些异步操作
setTimeout(function(){
console.log('1完毕!');
resolve('准备好1');
}, 1000);
});
return p;
}
function boil(){
console.log('2开始');
var p = new Promise(function(resolve, reject){ //做一些异步操作
setTimeout(function(){
console.log('2完毕!');
resolve('准备好2');
}, 6000);
});
return p;
}
Promise
.all([cutUp(), boil()])//all 方法在所有异步操作执行完后才执行下面函数
.then(function(results){
console.log("12准备完毕:");
console.log(results);
});
结果:

async函数
async function asyncValue(value) { //函数前面的async关键字,表明该函数将返回一个Promise对象
console.log('1');
//当遇到await关键字等待 await后的函数执行完成才会继续执行
await timeout(6000).then(function(data){
console.log(data);
}).catch(function(data){
console.log(data);
})
console.log('完毕');
return value;
}
asyncValue();//调用
function timeout(ms) {
return new Promise((resolve) => {
setTimeout(()=>{
resolve('干净的碗筷');
},ms);
});
}
结果:

Promise对象和async函数的更多相关文章
- Promise 对象与Generator 函数
异步编程的方法,大概有下面四种: 回调函数 事件监听 发布/订阅 Promise 对象 传统的编程语言,早有异步编程的解决方案(其实是多任务的解决方案).其中有一种叫做"协程"(c ...
- promise对象的回调函数resolve的参数为另一个promise对象
/*如果调用resolve函数和reject函数时带有参数,那么它们的参数会被传递给回调函数. reject函数的参数通常是Error对象的实例,表示抛出的错误: resolve函数的参数除了正常的值 ...
- Promise对象和回调函数,解决异步数据传递问题
下面的代码例子,均已小程序的异步请求数据为案例来说明 1.利用回调函数,来解决异步数据传递问题 异步操作api.js const getBooks = (url, callback) => { ...
- async 函数学习笔记
async函数就是Generator函数的语法糖. var fs = require('fs'); var readFile = function (fileName) { return new Pr ...
- ECMAScript 6 学习(二)async函数
1.什么是async函数 2.用法 2.1基本用法 3.语法 3.1返回promise对象 3.2promise状态的变化 3.3await命令 1.什么是async函数 async函数也是异步编程 ...
- es6学习笔记-async函数
1 前情摘要 前段时间时间进行项目开发,需求安排不是很合理,导致一直高强度的加班工作,这一个月不是常说的996,简直是936,还好熬过来了.在此期间不是刚学会了es6的promise,在项目有用到pr ...
- async函数
async函数的实现原理,就是将Generator函数和自动执行器,包装在一个函数里.async函数返回Promise对象,async函数的return值是then方法的参数,await后跟Promi ...
- js-ES6学习笔记-async函数(2)
1.async函数返回一个 Promise 对象. async函数内部return语句返回的值,会成为then方法回调函数的参数. async function f() { return 'hello ...
- 17.async 函数
async 函数 async 函数 含义 ES2017 标准引入了 async 函数,使得异步操作变得更加方便. async 函数是什么?一句话,它就是 Generator 函数的语法糖. 前文有一个 ...
随机推荐
- mybatis 一对多和一对一写法注意事项
<resultMap id="ChartResultMap" type="com.qif.dsa.ucenter.planinfo.entity.ChartDate ...
- Django 连接MySQL的驱动设置
对于在Django 中连接MySQL 的驱动,有以下三种: 1) mysqlclient 2) mysql-connector-python 3) pymysql (建议:这个包已经有一年未升级了,本 ...
- SDOI2019 R2退役记
还是退役了呀 Day -1 早上loli发了套题结果啥都不会 之后胡爷爷就秒了道数据结构 不过也没什么人做,于是全机房都在愉快的划水 下午来机房打了场luogu的\(rated\)赛,还是啥都不会 之 ...
- tensorflow的object detection的data augmention的使用
在protoc的目录下有data augmention的提示,而且注意是repeated,也就是你要这样写: 不能写在一个data_aumentation_options下面,至于有哪些选项可以用,可 ...
- windows 服务下搭建jsp运行环境
此处搭建的是运行环境,不是开发环境. 1, 下载sdk 并安装 1.8 http://rj.baidu.com/soft/detail/14459.html?ald 2, 配置环境变量 步 ...
- Ansible 安装使用过程中遇到过的问题
1.[root@ansible ~]# ansible-doc -l [DEPRECATION WARNING]: docker is kept for backwards compatibility ...
- github 访问加速
http://nullpointer.pw/github%E4%BB%A3%E7%A0%81clone%E5%8A%A0%E9%80%9F.html hosts:https://raw.githubu ...
- 历届试题_DNA比对
脱氧核糖核酸即常说的DNA,是一类带有遗传信息的生物大分子.它由4种主要的脱氧核苷酸(dAMP.dGMP.dCMT和dTMP)通过磷酸二酯键连接而成.这4种核苷酸可以分别记为:A.G.C.T. ...
- leyou_02_nginx使用域名访问本地项目
1.nginx的搭建依赖环境 1.1 准备jdk环境 当前最新版本下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index. ...
- 原生JS与JQ获取元素的区别
刚学JQ不久,有时候可能会把JS和JQ获取元素的方式搞错,接下来获取属性方法什么的就一发不可收拾了,现在把两者获取获取元素的代码整理下. 一.原生JS获取元素. 1.常用的三种方式获取元素对象(将指定 ...