美文网首页
JS异步编程

JS异步编程

作者: 大前端之路 | 来源:发表于2017-04-25 14:16 被阅读0次

1、创造 Node.js,并不是为了人们能在服务器上运行 JavaScript,仅仅是因为 Ryan Dahl想要一个建立在某高级语言之上的事件驱动型服务器框架。JavaScript碰巧就是适合干这个的语言。为什么?因为JavaScript语言可以完美地实现非阻塞式 I/O。

2、WebKit的 console.log 由于表现出异步行为而让很多开发者惊诧不已。在Chrome或Safari中,以下这段代码会在控制台记录
{foo:bar} 。

var obj = {};
console.log(obj);
obj.foo = 'bar';

3、队列

4、回调

5、异步错误的处理
EventModel/stackTrace.js

function JSONToObject(jsonStr) {
return JSON.parse(jsonStr);
}
var obj = JSONToObject('{');

SyntaxError: Unexpected end of input
at Object.parse (native)
at JSONToObject (/AsyncJS/stackTrace.js:2:15)
at Object.<anonymous> (/AsyncJS/stackTrace.js:4:11)

堆栈轨迹不仅告诉我们哪里抛出了错误,而且说明了最初出错的地方如果从异步回调中抛出错误,会发生什么事?让我们先来做个测试。

setTimeout(function A() {
setTimeout(function B() {
setTimeout(function C() {
throw new Error('Something terrible has happened!');
}, 0);
}, 0);
}, 0);

Error: Something terrible has happened!
at Timer.C (/AsyncJS/nestedErrors.js:4:13)
等等,A和 B发生了什么事?为什么它们没有出现在堆栈轨迹中?这是因为运行 C 的时候,A和 B并不在内存堆栈里。这 3个函数都是从事件队列直接运行的。
基于同样的理由,利用 try/catch 语句块并不能捕获从异步回调中抛出的错误。

try {
setTimeout(function() {
throw new Error('Catch me if you can!');
}, 0);
} catch (e) {
console.error(e);
}

看到这里的问题了吗?这里的 try/catch 语句块只捕获 setTimeout函数自身内部发生的那些错误。因为 setTimeout 异步地运行其回调,所以即使延时设置为 0,回调抛出的错误也会直接流向应用程序的未捕获异常处理器总的来说,取用异步回调的函数即使包装上 try/catch 语句块,也只是无用之举。
不过最常见的模式是,针对成败这两种情形各规定一个单独的回调。始终要记住的是,只能在回调内部处理源于回调的异步错误。
6、多线程性worker
在不损害 DOM响应能力的前提下处理复杂的计算
 解码视频。流入的视频采用 Broadway实现的 H.264编解码器
 采用斯坦福的 JavaScript加密库加密通信。
 解析网页式编辑器中的文本。没错,就是 Ace编辑器

7、promise和Deferred

Paste_Image.png

通过 ES6 Promise 和 jQuery Deferred 的异同学习 Promise

8、Async
9、<script> 标签经典型和非阻塞型
Require.js/AMD的智能加载

相关文章

  • 1-1作业参考答案

    模块一:函数式编程与 JS 异步编程、手写 Promise参考答案 简答题 一、谈谈你是如何理解 JS 异步编程的...

  • ES6 promise理解

    一、promise 是什么 1、Promise 是 JS 中解决异步编程的一种方案。 拓展:js中解决异步编程的...

  • 深入了解下Promise

    Promise 意义 Promise 的诞生与 Javascript 中异步编程息息相关,js 中异步编程主要指 ...

  • 01node.js

    01、模块 02、关注学习 03、Node.js 回调函数Node.js 异步编程的直接体现就是回调。异步编程依托...

  • 异步_ promise

    阮一峰 js的4种异步编程方法其他的一些异步编程方法 js 异步编程方法 一,回调函数 假定有两个函数f1和f2...

  • JavaScript事件循环

    js是一门单线程的语言,不可能进行多线程编程,异步编程就是多线程编程一种模式,但是我们经常讲到js的异步编程,其实...

  • js异步编程(updating)

    js 异步编程方式: Promise,generator/yield,async/await 回掉函数 js事件监...

  • JS异步编程(3)-Promise

    Promise 是 JS 异步编程中的重要概念,异步抽象处理对象,是目前比较流行的异步编程解决方案之一。主要解决了...

  • Promise

    1. Promise是什么 为解决异步编程,Common js 社区提出了Promise的规范,为异步编程提供了更...

  • Node学习(3)--异步编程

    Node.js 回调函数 Node.js 异步编程的直接体现就是回调。 异步编程依托于回调来实现,但不能说使用了回...

网友评论

      本文标题:JS异步编程

      本文链接:https://www.haomeiwen.com/subject/zpsvzttx.html