一位非计算机专业程序员的故事:21个嵌套回调

  大约21个月之前,那时候我还不知道什么是回调(callback),我建立了我的第一个网页。为了纪念这21个嵌套的回调,我觉得现在是回顾这个网页的时候了。

  在那时我有个可能有点老套的习惯,就是在人文课程或者家庭旅游的时候在笔记本上信手涂鸦一番。在某次暑期旅行中我创作了一组我自己觉得超酷的三角形图案。于是我觉得把它做成电子版是在那个夏天值得下功夫的事情。我还憧憬着这套东西让我在Tumblr上的形象显得超酷无比。

  我开始找了些计算机专业的朋友们,问他们是否可以给我指点一下方向。我得到的大把的答复可以总结为“google一下”,潜台词就是:“如果你google完了还不知道咋弄,你就是低能儿。”

点击查看原始大图

点击查看原始大图

  “我想在我的网页上做个三角形…不过Google看起来没给我什么好的答案。”

  “不,你要用‘CSS triangle’ 作为关键字去Google。看见了没?这很简单。”

  “不好意思…CSS和三角形有什么关系?”

  对话记录通常到此嘎然而止,或者是到“CSS就是你用来修饰你的HTML的东西。”

  (从这些交流过程中我总结出一个结论:程序猿们总是在比着看谁能把最多的事情称为“简单的”)

  每次对话完之后,我都觉得自己真是极品的废物。不过我后来发现了如何用一个div(那玩意代表啥东西?)和几行CSS来做出一个三角形形状,还有一些具有很酷的变换颜色效果的网站,可以复制下来做我的三角形图案。

  我知道你现在肯定很好奇我(这么一个编程小白)是怎么拼凑出这些来的。

  好吧,这里就是我的HTML的概貌:

  我要悲哀地告诉你们,下面还有165行类似的东西,另外配套的JavaScript代码也是一样重叠起来的,它就是个平行四边形。

  我后来又知道了有一种叫jQuery的东西,我可以用它的“API”里某个叫“animate”的东西来逐步改变我的三角形的各种属性。我发现如果 我调用一次$(‘#something’).animate({ ‘opacity’: ’0′ })就会让一个三角形消失。在我的头脑中觉得,如果我想让我的20行三角形一个个地消失,我需要把这样的代码写上20遍,这是符合逻辑的。

  通过拷贝和粘贴内容到JavaScript文件里的起始位置的方式,我还“ imported |导入”了jQuery。我曾经在其他的网页上看见它在不同的文件里,但我决定不管是否合理,也要把我所有的JavaScript都放到一个文件里。

  如果我打算自欺欺人,我可以说我选择了最优化的编程方式:用最难的风格。

$(“.disappear”).click(function(){ $(“#row20”).animate({ “opacity”: “0” }, 100, function(){$(“#row19”).animate({ “opacity”: “0” }, 100, function(){$(“#row18”).animate({ “opacity”: “0” }, 100, function(){$(“#row17”).animate({ “opacity”: “0” }, 100, function(){$(“#row16”).animate({ “opacity”: “0” }, 100, function(){$(“#row15”).animate({ “opacity”: “0” }, 100, function(){$(“#row14”).animate({ “opacity”: “0” }, 100, function(){$(“#row13”).animate({ “opacity”: “0” }, 100, function(){$(“#row12”).animate({ “opacity”: “0” }, 100, function(){$(“#row11”).animate({ “opacity”: “0” }, 100, function(){$(“#row10”).animate({ “opacity”: “0” }, 100, function(){$(“#row9”).animate({ “opacity”: “0” }, 100, function(){$(“#row8”).animate({ “opacity”: “0” }, 100, function(){$(“#row7”).animate({ “opacity”: “0” }, 100, function(){$(“#row6”).animate({ “opacity”: “0” }, 100, function(){$(“#row5”).animate({ “opacity”: “0” }, 100, function(){$(“#row4”).animate({ “opacity”: “0” }, 100, function(){$(“#row3”).animate({ “opacity”: “0” }, 100, function(){$(“#row2”).animate({ “opacity”: “0” }, 100, function(){$(“#row1”).animate({ “opacity”: “0” }, 100)})})})})})})})})})})})})})})})})}

  你可以在这里看到完整的源代码和最终产品。

  (我甚至经历了对齐每一个回调方法的缩进的麻烦,这在Windows Notepad上可是不容小觑的绝技)

才能做到人在旅途,感悟人生,享受人生。

一位非计算机专业程序员的故事:21个嵌套回调

相关文章:

你感兴趣的文章:

标签云: