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. 2019/10/24 CSP-S 模拟

    T1 tom 题意: 考虑一定是属于\(a\)的在一坨,属于\(b\)的在一坨,找到这条连接\(a\)和\(b\)的边,然后分别直接按\(dfs\)序染色即可 注意属于\(a\)的连通块或属于\(b\ ...

  2. Maven实战08_仓库

    何为Maven仓库 在Maven世界中.任何一个依赖.插件或者项目构建的输出,都可以称之为构件.例如依赖log4j-1.2.15.jar是一个构件,差价maven-compile-plugin-2.0 ...

  3. Appium环境安装步骤 + 代码验证环境是否成功

    1.安装Microsoft .NET Framework 4.5 检测本机已安装的程序中,是否已经安装Microsoft .NET Framework 4.5及以上的版本. 如下图所示:   如果没有 ...

  4. 【LGP4705】玩游戏

    题目 显然这个题的期望就是逗你玩的,我们算出来总贡献除以\(nm\)就好了 设\(ans_t=\sum_{i=1}^n\sum_{j=1}^n(a_i+b_j)^t\) 二项式定理展开一下 \[ans ...

  5. WPF+MVVM+EF示例1

    实现了那些功能,先看看效果图: 项目工程目录: 接下来开始具体的步骤: 第一步:在VS中新建工程 第二步:使用NuGet 安装EntityFramework 第三步:使用NuGet 安装EntityF ...

  6. pandas一些基本操作(DataFram和Series)_2

    import numpy as nparr1 = np.arange(32).reshape(8,4)print(arr1)arr1 = arr1.reshape(-1);print(arr1)arr ...

  7. InceptionV3代码解析

    InceptionV3代码解析 参考博文:https://blog.csdn.net/superman_xxx/article/details/65451916 读了Google的GoogleNet以 ...

  8. [计蒜客] 矿石采集【记搜、Tarjan缩点+期望Dp】

    Online Judge:计蒜客信息学3月提高组模拟赛 Label:记搜,TarJan缩点,树状数组,期望Dp 题解 整个题目由毫无关联的两个问题组合成: part1 问题:对于每个询问的起点终点,求 ...

  9. Ionic 微信支付

    1.安装插件 ionic plugin add https://github.com/mrwutong/cordova-qdc-wxpay.git 2.代码 controller.js angular ...

  10. China Final J - Mr.Panda and TubeMaster

    和一般的管道不同 不能类似“无限之环”或者“弯弯国”的建图,因为这两个题都是某些位置必须有,或者必须没有 但是本题可以有的位置随意,不能限制某个位置要么流2,要么流0,(实际上可能流了1过去) 所以建 ...