Callback, Promise和Async/Await的对比
Callback, Promise和Async/Await的对比
Callback Hell
getData1(function (data1) {
console.log('我得到data1了')
getData2(function (data2) {
console.log('我得到data2了')
console.log('data1 + data2 = ...')
})
})
Promise
function getData1() {
return new Promise(function (resolve, reject) {
setTimeout(function () {
resolve(1111)
}, 5000)
})
}
function getData2() {
return new Promise(function (resolve, reject) {
setTimeout(function () {
resolve(2222)
}, 10000)
})
}
function doSomething() {
let p1 = getData1().then(function (data) {
console.log('请求成功: data1 = ' + data)
return data
})
let p2 = getData2().then(function (data) {
console.log('请求成功: data2 = ' + data)
return data
})
Promise.all([p1, p2]).then(function (data) {
var sum = data[0] + data[1]
console.log('data1 + data2 = ' + sum)
})
}
Async/Await
async function getData1() {
return new Promise(function (resolve, reject) {
setTimeout(function () {
resolve(1111)
}, 5000)
})
}
async function getData2() {
return new Promise(function (resolve, reject) {
setTimeout(function () {
resolve(2222)
}, 5000)
})
}
async function doSomething() {
var data1 = await getData1()
console.log('请求成功: data1 = ' + data1)
var data2 = await getData2()
console.log('请求成功: data2 = ' + data2)
var sum = data1 + data2
console.log('data1 + data2 = ' + sum)
}
Callback, Promise和Async/Await的对比的更多相关文章
- js中回调函数,promise 以及 async/await 的对比用法 对比!!!
在编程项目中,我们常需要用到回调的做法来实现部分功能,那么在js中我们有哪些方法来实现回调的? 方法1:回调函数 首先要定义这个函数,然后才能利用回调函数来调用! login: function (f ...
- callback vs async.js vs promise vs async / await
需求: A.依次读取 A|B|C 三个文件,如果有失败,则立即终止. B.同时读取 A|B|C 三个文件,如果有失败,则立即终止. 一.callback 需求A: let read = functio ...
- 一个例子读懂 JS 异步编程: Callback / Promise / Generator / Async
JS异步编程实践理解 回顾JS异步编程方法的发展,主要有以下几种方式: Callback Promise Generator Async 需求 显示购物车商品列表的页面,用户可以勾选想要删除商品(单选 ...
- node.js异步控制流程 回调,事件,promise和async/await
写这个问题是因为最近看到一些初学者用回调用的不亦乐乎,最后代码左调来又调去很不直观. 首先上结论:推荐使用async/await或者co/yield,其次是promise,再次是事件,回调不要使用. ...
- Promise, Generator, async/await的渐进理解
作为前端开发者的伙伴们,肯定对Promise,Generator,async/await非常熟悉不过了.Promise绝对是烂记于心,而async/await却让使大伙们感觉到爽(原来异步可以这么简单 ...
- 异步操作之 Promise 和 Async await 用法进阶
ES6 提供的 Promise 方法和 ES7 提供的 Async/Await 语法糖都可以更好解决多层回调问题, 详细用法可参考:https://www.cnblogs.com/cckui/p/99 ...
- “setTimeout、Promise、Async/Await 的区别”题目解析和扩展
解答这个题目之前,先回顾下JavaScript的事件循环(Event Loop). JavaScript的事件循环 事件循环(Event Loop):同步和异步任务分别进入不同的执行"场所& ...
- promise 进阶 —— async / await 结合 bluebird
一.背景 1.Node.js 异步控制 在之前写的 callback vs async.js vs promise vs async / await 里,我介绍了 ES6 的 promise 和 ES ...
- Promise及Async/Await
一.为什么有Async/Await? 我们都知道已经有了Promise的解决方案了,为什么还要ES7提出新的Async/Await标准呢? 答案其实也显而易见:Promise虽然跳出了异步嵌套的怪 ...
随机推荐
- 【总结整理】关于IE6的兼容性
1. /*IE6兼容性,input边框border:none无效,不能去掉,只能把背景颜色去掉*/ background: none; /*background-color:#fff ;*/ 2. / ...
- pig 入门教程(1)
出处:http://www.codelast.com/ 本文可以让刚接触pig的人对一些基础概念有个初步的了解. 本文大概是互联网上第一篇公开发表的且涵盖大量实际例子的Apache Pig中文教程(由 ...
- miRNA
MicroRNA (miRNA) 是一类内生的.长度约为20-24个核苷酸的小 RNA,其在细胞内具有多种重要的调节作用.每个 miRNA 可以有多个靶基因的表达,而几个 miRNA 也可以调节同一 ...
- hdu1085
#include <iostream> #include <cstring> using namespace std; int n[3],a[9000],b[9000],i,j ...
- idea中java项目增加module后,增加的目录(src)无法增加包(Package)
在idea项目中,增肌model后,在项目根目录下增加src目录,右键发现无法增加包(Package). 仔细观察发现,新增加的src目录是棕色,而原先的src目录是浅蓝色的,见下图: 在src右键, ...
- Ubuntu下Apache2+Tomact7安装、配置及整合
安装Apache2 命令:apt-get install apache2 cd /etc/apache2 打开apache.conf 加入 ServerName localhostDirectory ...
- DMA缓冲区乒乓操作的处理
http://www.51hei.com/bbs/dpj-141761-1.html https://blog.csdn.net/sunnydreamrain/article/details/8288 ...
- AIM Tech Round 5 (rated, Div. 1 + Div. 2) E(思维,构造)
#include<bits/stdc++.h>using namespace std;long long a[150007];long long ans[150007];int main( ...
- 【Python之os模块】使用
目录 1. os.path 2. os.work 主要介绍在平时遇到的os模块的使用方法: 1. os.path 1.1 os.path.sep # 系统路径分隔符 # ============= ...
- 前端页面唯一字符串生成(Js)UUID
function uuid() { var s = []; var hexDigits = "0123456789abcdef"; for (var i = 0; i < 3 ...