Js 的异步解决方案(回调函数,Promise,async,obserable)

发布时间 2023-10-18 11:16:16作者: 两块五的菜鸟

        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