OSDN Git Service

backプロパティに自分自身のオブジェクトが入らないように改良
authordhrname <dhrname@users.sourceforge.jp>
Sun, 15 Sep 2013 14:05:59 +0000 (23:05 +0900)
committerdhrname <dhrname@users.sourceforge.jp>
Sun, 15 Sep 2013 14:05:59 +0000 (23:05 +0900)
tool/funcproto/sleep.js

index 5e6c5f2..ae7c86a 100644 (file)
@@ -5,15 +5,10 @@ Function.prototype.sleep = (function(){
       result = 0,\r
       functionque = [],\r
       se = setTimeout,\r
-      back, //Previous Function\r
       f = function () {\r
         var s = functionque.shift();\r
-        s.back = function() {\r
-          return (back.pop());\r
-        };\r
         result = s && s.call(s, result);\r
         if (functionque.length > 0) {\r
-          back.push(s);\r
           se(f, num.shift());\r
         } else {      //Time Loop End\r
           result = 0; //Reset the result\r
@@ -23,15 +18,18 @@ Function.prototype.sleep = (function(){
     functionque.push(this);\r
     num.push((arguments[0] || 0));\r
     if (functionque.length === 1) {\r
-      back = [];\r
       se(f, 0);\r
+    } else if ((this !== functionque[functionque.length-2]) && functionque.length > 1){\r
+      /*back\83v\83\8d\83p\83e\83B\82É\82Í\81A\91O\82É\93o\98^\82µ\82Ä\82¨\82¢\82½\8aÖ\90\94\82ª\93ü\82é*/\r
+      this.back = functionque[functionque.length-2];\r
     }\r
   };  \r
 })();\r
 \r
+\r
 function fn (result) {\r
   var that = this;\r
-  describe("Async::sleep", function() {\r
+  describe("Async::sleep2", function() {\r
     it("default action", function() {\r
       expect(result).toEqual(0);\r
       expect(that).toEqual(fn)\r
@@ -43,10 +41,10 @@ fn.sleep();
 \r
 (function (result) {\r
   var that = this;\r
-  describe("Async::sleep2", function() {\r
+  describe("Async::sleep3", function() {\r
     it("default action2", function() {\r
       expect(result).toEqual(1);\r
-      expect(that.back()).toEqual(fn);\r
+      expect(that.back).toEqual(fn);\r
     });\r
   });\r
   __start_();\r