JavaScript异步编程1.3.1 何时称函数为异步的_JavaScript异步编程1.3.1 何时称函数为异步的试读-查字典图书网
查字典图书网
当前位置: 查字典 > 图书网 > 编程 > JavaScript异步编程 > 1.3.1 何时称函数为异步的

JavaScript异步编程——1.3.1 何时称函数为异步的

异步函数这个术语有点名不副实:调用一个函数时,程序只在该函数返回之后才能继续。JavaScript写手如果称一个函数为“异步的”,其意思是这个函数会导致将来再运行另一个函数,后者取自于事件队列(若后面这个函数是作为参数传递给前者的,则称其为回调函数,简称为回调)。于是,一个取用回调的异步函数永远都能通过以下测试。 var functionHasReturned = false; asyncFunction(function() { console.assert(functionHasReturned); }); functionHasReturned = true; 异步函数还涉及另一个术语,即非阻塞。非阻塞这个词强调了异步函数的高速度:异步MySQL数据库驱动程序做一个查询可能要花上一小时,但负责发送查询请求的那个函数却能以微秒级速度返回。这对于那些需要快速处理海量请求的网站服务器来说,绝对是个福音。 通常,那些取用回调的函数都会将其作为自己的最后一个参数。(可惜的是,老资格的setTimeout和setInterval都是这一约定的特例。)不过,有些异步函数也会间接取用回调,它们会返回Promise对象或使用PubSub模式。本书稍后就会介绍这些异步设计模式。 遗憾的是,要想确认某个函数异步与否,唯一的方法就是审查其源代码。有些同步函数却拥有看起来像是异步的API,这或者是因为它们将来可能会变成异步的,又或者是因为回调这种形式能方便地返回多个参数。一旦存疑,请别指望函数就是异步的。

展开全文

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

《JavaScript异步编程》其他试读目录

• 第1章:深入理解JavaScript事件
• 1.1.1 现在还是将来运行
• 1.1.2 线程的阻塞
• 1.1.3 队列
• 1.2 异步函数的类型
• 1.2.1 异步的I/O函数
• 1.2.2 异步的计时函数
• 1.3 异步函数的编写
• 1.3.1 何时称函数为异步的 [当前]
• 1.3.2 间或异步的函数
• 1.3.3 缓存型异步函数
• 1.3.4 异步递归与回调存储
• 1.3.5 返值与回调的混搭
• 1.4 异步错误的处理
• 1.4.1 回调内抛出的错误
• 1.4.2 未捕获异常的处理
• 1.4.3 抛出还是不抛出
• 1.5 嵌套式回调的解嵌套
• 1.6 小结