js的内部代码执行是单线程的,这就意味着js代码如果不做特殊处理,所有的代码执行顺序都是同步的,即从头到尾执行。但是,随着前端功能的越来越多样化,为了节省时间,提高效率,便需要使用异步,即多线程执行。所以,前端的伪多线程,异步解决方案应运而生。从最早的回调函数,到Promise,再到Generator函数,再到新的状态管理工具,reactX等多样,新潮的异步解决方案。下面就是一些关于他们的简单介绍。
1.回调函数:所谓回调函数,就是把任务的第二段单独写在一个函数里面,等到重新执行这个任务的时候,就直接调用这个函数
我的理解:就是把还不执行的代码以一个函数的形式保存着,并不执行。当之后某个条件达成,直接调用这个函数,执行代码。回头了来调用,所以叫回调。
借用一下一峰大神的例子(读取文件):
1 fs.readFile('/etc/passwd', function (err, data) { 2 if (err) throw err; 3 console.log(data); 4 });
先来看下这个例子,这是一个读取文件后,执行blabla...的函数。它先会执行读取文件操作,并不执行第二个函数,然后再继续往后执行。等读完文件后,再次回头执行第二个函数。这就一个典型的自动回调函数,yeah!✌
2.Promise:一个前端异步解决方案,也就是为了实现异步而诞生的。
要理解Promise,得先来看看Promise到底是什么,以及它所运行的规则是什么。一言不合上代码。
1 var promise = new Promise(function(resolve, reject){ 2 // ... some code 3 4 if (/* 异步操作成功 */) { 5 resolve(value); 6 } else { 7 reject(error); 8 } 9 })
查阅引用的来源,如有侵权,立删
1.阮一峰 Generator 函数的含义与用法;async 函数的含义和用法
2.流眸Tel JS执行——Promise