资讯专栏INFORMATION COLUMN

从生成器到async/await

xfee / 1289人阅读

摘要:生成器虽然有序可靠地管理回调,但是我们还是希望如同步般表达异步。我们已经知道生成器是作为生产迭代器的工厂函数,同时我们还要知道生成器也是一个消息传递系统。为什么是生成器在生成器出现之前,程序代码一旦执行,就没有停下来的时候,直到程序结束

回顾

所谓的异步,就是程序的一部分现在进行,而另一部分则在将来运行。异步处理的重点就是如何处理将来运行的那一部分。

回调是 JavaScript 中最基本的异步模式,就是事先约定好将来要做的事然后回头调用。简单直接,但也存在不信任、调用嵌套过深等问题。对于编写代码、维护代码的我们而言,人类的大脑还是习惯于线性的处理方式。

基于回调的异步模式所存在的问题促使着我们寻求一种机制来保证回调的可信任,同时能更好的表达异步。这时候 Promise 出现了,Promise 的出现,并非要取代回调。而是把回调转交给了一个位于我们和其它工具之间的可信任的中介机制。Promise 链也提供(尽管并不完美)以顺序的方式表达异步流的一个更好的方法,这有助于我们的大脑更好地计划和维护异步 JavaScript 代码。

生成器
Promise 虽然有序、可靠地管理回调,但是我们还是希望如同步般表达异步。

我们已经知道生成器是作为生产迭代器的工厂函数,同时我们还要知道生成器也是一个消息传递系统。

为什么是生成器

在生成器出现之前,程序代码一旦执行,就没有停下来的时候,直到程序结束

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/102897.html

相关文章

  • JS引擎理解Await b()与Promise.then(b)的堆栈处理

    摘要:对于引擎来说,两者获取堆栈的方式是不同的。对于引擎来说,堆栈信息附加在了函数所返回的并在链中传递,这样函数也能在需要的时候获取堆栈信息。使用可以实时监控线上应用的错误,并获取完整的堆栈信息。 译者按: Async/Await真的只是简单的语法糖吗?No! 原文:Asynchronous stack traces: why await beats .then() 作者: Math...

    ziwenxie 评论0 收藏0
  • Generator和Async/Await

    摘要:以往的异步方法无外乎回调函数和。出错了出错了总结接口遍历器对象除了具有方法,还可以具有方法和方法。函数调用函数,返回一个遍历器对象,代表函数的内部指针。 引言 接触过Ajax请求的会遇到过异步调用的问题,为了保证调用顺序的正确性,一般我们会在回调函数中调用,也有用到一些新的解决方案如Promise相关的技术。 在异步编程中,还有一种常用的解决方案,它就是Generator生成器函数。顾...

    Eastboat 评论0 收藏0
  • ES6—Async与异步编程(11)

    摘要:所以异步编程对语言太重要。异步编程我们就以用户注册这个特别常见的场景为例,讲讲异步编程。这种层层嵌套被称为回调地狱。相比回调函数而言,代码可读性更高,代码的执行顺序一目了然。函数内部语句返回的值,会成为方法回调函数的参数。 单线程是Javascript语言最本质的特性之一,Javascript引擎在运行js代码的时候,同一个时间只能执行单个任务。 这种模式的好处是实现起来比较简单,执行...

    chengjianhua 评论0 收藏0
  • JavaScript异步编程:Generator与Async

    摘要:从开始,就在引入新功能,来帮助更简单的方法来处理异步编程,帮助我们远离回调地狱。而则是为了更简洁的使用而提出的语法,相比这种的实现方式,更为专注,生来就是为了处理异步编程。 从Promise开始,JavaScript就在引入新功能,来帮助更简单的方法来处理异步编程,帮助我们远离回调地狱。 Promise是下边要讲的Generator/yield与async/await的基础,希望你已...

    leon 评论0 收藏0

发表评论

0条评论

xfee

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<