JS异步编程一:用Jscex画圆

开发 前端
关注老赵的jscex很久了,jscex利用eval(str)的无限可能,从“$async” 到“async”,从不支持if else 等 到支持 if else等·,jscex正在不断完善和优化当中。

一.简介

关注老赵的jscex很久了,jscex利用eval(str)的无限可能,从“$async” 到“async”,从不支持if else 等 到支持 if else等·,jscex正在不断完善和优化当中。jscex完全可以投入生产环境了··

二.画圆

在支持html5的浏览器中执行下面代码:

  1. > 
  2. <html> 
  3. <body> 
  4. <canvas id="myCanvas" width="480" height="300" style="border:1px solid #c3c3c3;"> 
  5. Your browser does not support the canvas element. 
  6. canvas> 
  7. <script type="text/javascript"> 
  8.     var c = document.getElementById("myCanvas"); 
  9.     var ccxt = c.getContext("2d"); 
  10.     var x = 150
  11.     var y = 150
  12.     var r = 100
  13.     cxt.moveTo(x - r, y); 
  14.     for (var i = x - r; i < x + r + 1; i++) { 
  15.         var tempY = Math.pow(r * r - (x - i) * (x - i), 1 / 2); 
  16.         cxt.lineTo(i, y + tempY); 
  17.     } 
  18.     cxt.moveTo(x - r, y); 
  19.     for (var i = x - r; i < x + r + 1; i++) { 
  20.         var tempY = Math.pow(r * r - (x - i) * (x - i), 1 / 2); 
  21.         cxt.lineTo(i, y - tempY); 
  22.     } 
  23.       cxt.stroke(); 
  24. script> 
  25. body> 
  26. html> 

在Canvas里显示如下:

但是,我们明明是在画圆,怎么没有看到画圆的过程?javascript就是这样,解释完就画完了,而不会呈现解释的过程,这也是为什么javascript不用考虑多线程问题,仅仅UI线程。那么怎么看到画圆的过程?

jscex闪亮登场!

 

  1. > 
  2. <html> 
  3. <body> 
  4. <canvas id="myCanvas" width="480" height="300" style="border:1px solid #c3c3c3;"> 
  5. Your browser does not support the canvas element. 
  6. canvas> 
  7.     <script language="javascript" type="text/javascript" src="lib/uglifyjs-parser.js">script> 
  8.     <script language="javascript" type="text/javascript" src="src/jscex.js">script> 
  9.     <script language="javascript" type="text/javascript" src="src/jscex.builderBase.js">script> 
  10.     <script language="javascript" type="text/javascript" src="src/jscex.async.js">script> 
  11. <script type="text/javascript"> 
  12.     var c = document.getElementById("myCanvas"); 
  13.     var ccxt = c.getContext("2d"); 
  14.     var x = 150
  15.     var y = 150
  16.     var r = 100
  17.     var drawAsync = eval(Jscex.compile("async", function () { 
  18.         cxt.moveTo(x - r, y); 
  19.         for (var i = x - r; i < x + r + 1; i++) { 
  20.             $await(Jscex.Async.sleep(10)); 
  21.             var tempY = Math.pow(r * r - (x - i) * (x - i), 1 / 2); 
  22.             cxt.lineTo(i, y + tempY); 
  23.             cxt.stroke(); 
  24.         } 
  25.         cxt.moveTo(x - r, y); 
  26.         for (var i = x - r; i < x + r + 1; i++) { 
  27.             $await(Jscex.Async.sleep(10)); 
  28.             var tempY = Math.pow(r * r - (x - i) * (x - i), 1 / 2); 
  29.             cxt.lineTo(i, y - tempY); 
  30.             cxt.stroke(); 
  31.         }      
  32.     })); 
  33.     drawAsync().start(); 
  34. script> 
  35. body> 
  36. html> 

这样就可以目睹画圆全过程!

原文链接:http://www.cnblogs.com/iamzhanglei/archive/2011/08/16/2140113.html

【编辑推荐】

  1. JS异步编程二:自由落体
  2. JS异步编程三:Jscex无创痕切入jQUI
  3. JS异步编程四:Jscex+jQ打造游戏力度条
  4. JS异步编程五:Jscex制作愤怒的小鸟
  5. 看JavaScript如何实现页面自适

 

责任编辑:张伟 来源: 当耐特砖家的博客
相关推荐

2011-11-10 10:23:56

Jscex

2012-06-14 14:03:19

JavaScript

2012-06-14 14:42:42

JavaScript

2012-06-14 14:09:58

JavaScript

2011-07-27 14:10:43

javascript

2011-11-16 13:22:38

Jscex

2011-11-11 13:38:39

Jscex

2011-11-17 16:14:25

Jscex

2012-06-14 13:55:39

JavaScript

2019-01-17 10:58:52

JS异步编程前端

2011-02-22 08:49:16

.NET同步异步

2013-04-01 15:38:54

异步编程异步编程模型

2013-01-21 13:18:26

IBMdW

2021-03-23 07:56:54

JS基础同步异步编程EventLoop底层

2013-04-01 15:25:41

异步编程异步EMP

2020-10-15 13:29:57

javascript

2011-10-18 10:17:13

Node.js

2011-02-22 09:09:21

.NETAsync CTP异步

2017-07-13 12:12:19

前端JavaScript异步编程

2016-09-07 20:43:36

Javascript异步编程
点赞
收藏

51CTO技术栈公众号