Javascript 回调和事件(翻译)(5)
作者:mingcheng 来源:gracecode.com 发布时间:2009-03-28 11:47:00
-- Split --
在本人看来,原文的作者表述的技术点,除了如何创建健壮的回调系统外,其实还有两条。
其一,就是如何保证在出现异常的时,继续运行期望的代码;其二,就是如何创建互不干扰的“运行环境”。
原文提到的 createEvent 和 setTimeout 都是好办法,只是处理原作者所言在回调系统中,的确使用 createEvent 会比较合适。setTimeout 相对应的详细信息,可移步到 Realazy 兄的相关文章。
而即使出错也能继续运行期望的代码,其实可以考虑使用 finally 语句,下面是个例子:
var callbacks = [ function() { console.log(0); }, function() { console.log(1); throw new Error; }, function() { console.log(2); }, function() { console.log(3); }];for(var i = 0, len = callbacks.length; i < len; i++) { try { callbacks[i](); } catch(e) { console.info(e); // 获得异常信息 } finally { continue; }}
这一灵感同样来自 Dean Edwards 文章后的回复,在这里也贴下吧:
function iterate(callbacks, length, i) { if (i >= length) return; try { callbacks[i](); } catch(e) { throw e; } finally { iterate(callbacks, length, i+1); }}
最后,留个小问题。谁知道上述的代码中,留言者提出的为什么异常到最后才打印出来不?


猜你喜欢
- 前言最近在爬行 nosec.org 的数据,看了下需要模拟登录拿到cookie后才能访问想抓的数据,重要的是 nosec.org 的登录页面
- Vue 中使用v-for语句抛出错误的解决方案今天在维护以前的项目的时候遇见了下面的报错情况,开始我以为是因为jQuery和Vue冲突了,所
- MYSQL介绍MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行
- 服务器:#server.py#!/usr/bin/env python#-*-coding:utf-8-*-import sysimport
- Jaspersoft Studio添加数据库配置可以解决报表字段较多,手动添加效率低的问题。添加数据库配置,笔者这里以 mysql 为例,步
- 最近用了pycharm,感觉还不错,就是pandas中Series、DataFrame的plot()方法不显示图片就给我结束了,但是我在ip
- 效果图守卫类游戏大家应该玩过吧,什么植物大战僵尸呀,保卫萝卜呀,今天我们自己用python来写一个自己的守护类小游戏兔子猎人守护城堡,让大家
- 1.查询当前数据库所有表SELECT O.object_id AS TableId, &nb
- 1. 扩展Tensor维度相信刚接触Pytorch的宝宝们,会遇到这样一个问题,输入的数据维度和实验需要维度不一致,输入的可能是2维数据或3
- 概述你可能在JavaScript项目中都用了console.log。这是一种查看变量的值或程序运行中发生的事情的便捷方法。但是JavaScr
- 之前安装mysql 5.7.12时未做总结,换新电脑,补上安装记录,安装的时候,找了些网友的安装记录,发现好多坑(一)mysql 5.7.1
- 字典中元素的个数计算len(字典名)举例:person={"姓名":"张三","年龄&qu
- 情况1:Go语言中,若在子go程中创建一个新 go程,子go程释放(销毁),新创建的go程不会随着子go程的销毁而销毁。原因:go程共享堆,
- 本文记录了mysql 5.7.18绿色版下载安装的详细过程1、先下载mysq5.7.18绿色版,然后解压出来,放在一个目录下,我的解压mys
- 来蓝色一直都在潜水,很少写帖子,太对不起大家了.下面和大家探讨一个话题,希望能引起大家的兴趣.关于H1,一直都想和大家讨论H1用法的问题,可
- 1.在搭建网络开始时,会调用到 keras.models的Sequential()方法,返回一个model参数表示模型2.model参数里面
- Python time模块时间获取和转换Time模块介绍Python的Time库可以进行时间相关的处理,如访问当前日期和时间,输出不同格式的
- 项目地址githubpyenv does...改变每个用户系统级别的 python 版本为每个项目提供不同的 python 版本安装克隆到本
- 背景:项目中有多个组件调用同一接口,为提高代码可维护性,需要封装公共方法直接return 接口调用的结果export function ge
- 在移动端开发应用UI组件也会遇到一系列需要注意的问题。问题1比如说,标签页是一个整体的组件,但是我们需要将标签页的标题和其他组件一起固定到顶