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. SQLite C++操作类

    为了方便SQLite的使用,封装了一个SQLite的C++类,同时支持ANSI 和UNICODE编码.代码如下:   头文件(SQLite.h) [cpp] view plaincopy /***** ...

  2. canvas石英钟

    canvas石英钟:demo <!DOCTYPE html> <html> <head lang="en"> <meta charset= ...

  3. 《DSP using MATLAB》Problem 8.15

    代码: %% ------------------------------------------------------------------------ %% Output Info about ...

  4. JavaEE三层架构

    三层架构         三层架构是javaee规范中的推荐架构,传统意义上是分为表示层(UI).业务逻辑层(BLL).数据访问层(DAL).在javaee的开发中,三层架构具体分为表示层(web层) ...

  5. HandlerInterceptorAdapter或HandlerInterceptor的使用

    Spring拦截器 HandlerInterceptorAdapter需要继承,HandlerInterceptor需要实现 可以作为日志记录和登录校验来使用 建议使用HandlerIntercept ...

  6. 2018-8-10-docfx-做一个和微软一样的文档平台

    title author date CreateTime categories docfx 做一个和微软一样的文档平台 lindexi 2018-08-10 19:16:51 +0800 2018-2 ...

  7. Leetcode319. Bulb Switcher灯泡开关

    初始时有 n 个灯泡关闭. 第 1 轮,你打开所有的灯泡. 第 2 轮,每两个灯泡你关闭一次. 第 3 轮,每三个灯泡切换一次开关(如果关闭则开启,如果开启则关闭).第 i 轮,每 i 个灯泡切换一次 ...

  8. 跟我一起了解koa之koa的cookie(三)

    代码中写入 然后我们每次刷新浏览器,代码里面的pvid都会改变 我们可以读取cookie 访问json数据出现结果

  9. springcloud-sleuth实现日志的链路追踪

    1.需要将spring-cloud-starter-sleuth的依赖加入即可(注意:最好使用maven或gradle工具) 代码参考:https://github.com/Pinshuducha/s ...

  10. 解决maven项目创建过慢的问题

    关键就在这里:添加以下键值对 archetypeCataloginternal 之后点击Next,再单击Finish即可.