JavaScript之异步概述

1,异步(什么是异步,异步出现的原因, 异步解决的问题,如何实现异步,什么时候需要异步模式。)

JavaScript是顺序执行的函数,同一个js文件中的函数不可能同时执行,函数执行时间的先后导致异步(现在和未来)。                异步的实现方式:回调函数----> Promise ---->Generator生成器函数

2,回调函数

回调函数是异步的基本单元,setTimeout是最常见的回调函数,JavaScript允许函数作为参数使用,这为回调函数的定义和使用提供了一定的便利。回调出现的问题:控制反转,调用第三方(自己写的或者别人写的)API,执行第三方API的流程,执行过程不可控。

控制反转(inversion of control),也就是把自己程序一部分的执行控制交给某个第三方。在你的代码和第三方工具(一组你希望有人维护的东西)之间有一份并没有明确表达的契约。

3,Promise (定义,相对回调解决的问题以及怎么解决的,优点特点,)

JavaScript是单线程语言,现在执行和将来执行导致异步。“将来一定会执行”的对象为Promise,也可以理解为包含信任的回调函数。Promise.resolve(...)传入非Promise、非thenable的值,返回一个以传入值填充的Promise对象。该方法很好的解决了Promise的信任问题。

THENABLE:识别 Promise(或者行为类似于 Promise 的东西)就是定义某种称为 thenable 的东西,将其定义为任何具有 then(..) 方法的对象和函数。我们认为,任何这样的值就是Promise 一致的 thenable。

4,Generator生成器函数(iterator以及两者间关系,生成器函数定义,与一般函数的区别,)

iterator(遍历器、迭代器):为不同的数据结构添加iterator后,即可依次处理该数据结构的所有成员。将iterator看作一种机制(接口)更利于理解,为各种数据结构提供接口,使得数据结构的成员能够顺序排列,利于ES6遍历命令for......of遍历。

Generator函数总是返回一个遍历器对象,ES6规定这个遍历器是Generator函数的实例,并继承Generator函数的Prototype对象的方法。

Generator函数保留一般函数的属性与方法定义方式看,在函数名前加*以区别一般函数,函数内部使用yield表达式。

function* generator() {    yeild func1();    yeild func2(); }

你可能感兴趣的:(JavaScript之异步概述)