ES7新特性:Async Functions (异步函数):javascript
异步是什么css
没法当即得到执行结果,知足某种条件的时候才执行html
JS中的异步操做:一、定时器都是异步操做二、事件监听(事件绑定)都是异步操做三、AJAX中通常咱们都采起异步操做(也能够同步)四、回调函数能够理解为异步(不是严谨的异步操做)剩下的都是同步处理java
示例: for (var i = 1; i <= 3; i++) {node
setTimeout(function(){es6
console.log(i);编程
}, 0);promise
};浏览器
异步的好处异步
Javascript语言的执行环境是"单线程"(single thread)。 所谓"单线程",就是指一次只能完成一件任务。若是有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推。
这种模式的好处是实现起来比较简单,执行环境相对单纯;坏处是只要有一个任务耗时很长,后面的任务都必须排队等着,会拖延整个程序的执行。常见的浏览器无响应(假死),每每就是由于某一段Javascript代码长时间运行(好比死循环),致使整个页面卡在这个地方,其余任务没法执行。为了解决这个问题,Javascript语言将任务的执行模式分红两种:同步(Synchronous)和异步(Asynchronous)。
async function foo() {}
const foo = async function () {};
let obj = { async foo() {} }
const foo = async () => {};
async(异步) 函数老是返回 Promises,Promise对象必须实现then方法,then是promise规范的核心,并且then方法也必须返回一个Promise对象,同一个Promise对象能够注册多个then方法,而且回调的执行顺序跟它们的注册顺序一致;
Promise对象:Promise是异步编程的一种解决方案
//定义一个Promise对象玩玩
var p = new Promise(function(resolve, reject){ //作一些异步操做 setTimeout(function(){ console.log('执行完成'); resolve('随便什么数据'); }, 2000); });
参考技术文档:
对js Promise理解:https://blog.csdn.net/qq_29849641/article/details/54970328
es6学习笔记10--箭头函数:https://www.cnblogs.com/huansky/p/5684867.html
nodejs之async异步编程:http://cnodejs.org/topic/54acfbb5ce87bace2444cbfb
ES2017 新特性:Async Functions (异步函数):http://www.css88.com/archives/7731
浅谈ES6的Promise对象:https://www.jianshu.com/p/c98eb98bd00c
完全理解Promise对象——用es5语法实现一个本身的Promise(上篇):https://www.cnblogs.com/malingyang/p/6535805.html
大白话讲解Promise(一):https://www.cnblogs.com/lvdabao/p/es6-promise-1.html
Javascript异步编程的4种方法:http://www.ruanyifeng.com/blog/2012/12/asynchronous%EF%BC%BFjavascript.html?bsh_bid=1736591883