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函数的更多相关文章

  1. Promise 对象与Generator 函数

    异步编程的方法,大概有下面四种: 回调函数 事件监听 发布/订阅 Promise 对象 传统的编程语言,早有异步编程的解决方案(其实是多任务的解决方案).其中有一种叫做"协程"(c ...

  2. promise对象的回调函数resolve的参数为另一个promise对象

    /*如果调用resolve函数和reject函数时带有参数,那么它们的参数会被传递给回调函数. reject函数的参数通常是Error对象的实例,表示抛出的错误: resolve函数的参数除了正常的值 ...

  3. Promise对象和回调函数,解决异步数据传递问题

    下面的代码例子,均已小程序的异步请求数据为案例来说明 1.利用回调函数,来解决异步数据传递问题 异步操作api.js const getBooks = (url, callback) => { ...

  4. async 函数学习笔记

    async函数就是Generator函数的语法糖. var fs = require('fs'); var readFile = function (fileName) { return new Pr ...

  5. ECMAScript 6 学习(二)async函数

     1.什么是async函数 2.用法 2.1基本用法 3.语法 3.1返回promise对象 3.2promise状态的变化 3.3await命令 1.什么是async函数 async函数也是异步编程 ...

  6. es6学习笔记-async函数

    1 前情摘要 前段时间时间进行项目开发,需求安排不是很合理,导致一直高强度的加班工作,这一个月不是常说的996,简直是936,还好熬过来了.在此期间不是刚学会了es6的promise,在项目有用到pr ...

  7. async函数

    async函数的实现原理,就是将Generator函数和自动执行器,包装在一个函数里.async函数返回Promise对象,async函数的return值是then方法的参数,await后跟Promi ...

  8. js-ES6学习笔记-async函数(2)

    1.async函数返回一个 Promise 对象. async函数内部return语句返回的值,会成为then方法回调函数的参数. async function f() { return 'hello ...

  9. 17.async 函数

    async 函数 async 函数 含义 ES2017 标准引入了 async 函数,使得异步操作变得更加方便. async 函数是什么?一句话,它就是 Generator 函数的语法糖. 前文有一个 ...

随机推荐

  1. sudo apt-get常用命令

    一.卸载 1. sudo apt-get autoclean 如果你的硬盘空间不大的话,可以定期运行这个程序,将已经删除了的软件包的.deb安装文件从硬盘中删除掉.如果你仍然需要硬盘空间的话,可以试试 ...

  2. 深入浅出Mybatis系列(二)---配置简介(mybatis源码篇)[转]

    上篇文章<深入浅出Mybatis系列(一)---Mybatis入门>, 写了一个Demo简单体现了一下Mybatis的流程.本次,将简单介绍一下Mybatis的配置文件: 上次例子中,我们 ...

  3. 【转载】Fiddler抓包及模拟服务端

    此文章转载公众号‘云测学院'链接:https://mp.weixin.qq.com/s/qXmBDh980nBJ8IchbRGC3Q 及公众号gloryroadtrain 在HTTP接口的测试过程中, ...

  4. 编写函数处理user_list,新方法

    写函数,完成以下功能: # 例如有: user_list=[ {"name": "alex","hobby":"抽烟"} ...

  5. Spring Cloud Config-Client 无法获取 Config-Server 在 github 上的配置文件的属性值,竟然是因为

    Spring Cloud Config-Client 无法获取 Config-Server 在 github 上的配置文件的属性值,竟然是因为!!! 2018年07月23日 16:33:25 一颗很菜 ...

  6. Teigha克隆db的blockTableRecord里面的一个实体

    std::vector<OdDbEntityPtr> entities; OdDbBlockTableRecordPtr blkTblRcd = blockId.openObject(); ...

  7. 09.Hibernate中的事务与并发

    事务1. 什么是事务 * 事务就是逻辑上的一组操作,组成事务的各个执行单元,操作要么全都成功,要么全都失败. * 转账的例子:冠希给美美转钱,扣钱,加钱.两个操作组成了一个事情! 2. 事务的特性 * ...

  8. 利用animate.css和es6制作文字向上滚动的效果

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <link rel= ...

  9. 微信回调校验失败兼容php7

    今天在移动微信支付的代码的时候,发现校验失败,之前好好的,一点点打印了,顺着微信校验程序打印看结果,发现  $xml = $GLOBALS['HTTP_RAW_POST_DATA'];; 接收到的数据 ...

  10. bzoj1706 relays 奶牛接力跑 线性代数

    题目描述 FJ的N(2 <= N <= 1,000,000)头奶牛选择了接力跑作为她们的日常锻炼项目.至于进行接力跑的地点 自然是在牧场中现有的T(2 <= T <= 100) ...