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. vuex结合vue-cookies的使用

    一.创建vuex import Vue from 'vue' import Vuex from 'vuex' import cookie from "vue-cookies" Vu ...

  2. Emmet 快捷支持

    1.https://docs.emmet.io/    [快捷demo视频演示] 2.https://docs.emmet.io/cheat-sheet/   [更多Emmet快捷案例示范]

  3. webpack新手名词解释……妈妈再也不担心我看不懂webpack官方文档了

    __dirname : 在任何模块文件内部,可以使用__dirname变量获取当前模块文件所在目录的完整绝对路径. path.resolve(): 方法将一系列路径或路径段解析为绝对路径. 语法: p ...

  4. PAT甲级——A1076 Forwards on Weibo

    Weibo is known as the Chinese version of Twitter. One user on Weibo may have many followers, and may ...

  5. apache netbeans不再集成tomcat

    老版本 8.2之前的,集成tomcat,安装使用比较简单https://netbeans.org/features/index.html 新版本的阿帕奇netbeans,则不集成tomcat,使用时, ...

  6. python学习笔记4.1_检测和过滤异常值

    1.查看数据分布data.describe() 2.找出某列中符合筛选条件的值 3.找出符合筛选条件的行 4.用np.sign(data)*3设置绝对值的标准 data[np.abs(data)> ...

  7. ElasticSearch入门介绍之会当凌绝顶(一)

    ElasticSearch也是一款非常优秀的开源的全文检索框架,以大名鼎鼎的Apache Lucene为基础,高度封装了更丰富,易用的API,同时与Apache Solr一样,提供了非常强大的分布式集 ...

  8. spring中的ResponseEntity理解

    参考: https://blog.csdn.net/weixin_37869477/article/details/82762976 https://blog.csdn.net/sswqzx/arti ...

  9. 在输入一个url到返回页面,中间发生了什么?

    在浏览器中输入url,客户端先检查本地是否有对应的ip地址,如果找到了则返回响应的ip地址,如果没有找到则会请求DNS服务器,返回解析后的ip地址.应用层客户端发送HTTP请求,包括请求头和请求体.其 ...

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

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