`
lxs647
  • 浏览: 523144 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Flex 中关于setTimeOut的问题

 
阅读更多

在做项目的过程中,碰到这么个问题:

 

在一个函数中,执行的是压缩一个目录:

 

Test

|__subdir1

|__subdir2

 

testdir

|__test1.html

|__test2.html

 

现在的要求就是先将testdir目录中的文件压缩成zip包,然后拷贝到subdir1目录下,最后再将Test目录打包发布。。。

public function func1():void

{

   func2();

   func3();

   compress(0);

}

 

public function func2():void

{

  ...

  compress(0);

  copyToDir();

  ...

}

 

public function func3():void

{

   ...

}

 

//zipFiles:需要添加到压缩包中的文件,Array类型。。。

public function compress(index:int):void

{

  if(index<0 ||index>zipFiles.length)return;

  if(index == zipFiles.length){

      writeZipFile();

  }else{

      ....

      setTimeout(compress, 50, (index+1));

   }

}

 

我的函数的执行顺序大概就是上面的样子,需求如上。。。

这么一来,就出现了一个问题:

 

就是最后在生成好了的压缩包中并没有看到testdir zip包,也就是说是空的.

期望的是:

 

Test

|__subdir1

           |___testdir.zip

|__subdir2

 

 但是现在实际情况是没有生成这个压缩包。。。

 

刚开始一直没有搞懂是什么原因。。。

 

后来才知道:

 

原来是compress()函数中setTimeout函数的原因。。。

 

之所以会这样儿,是因为在执行func2函数中的compress方法的时候,当执行到setTimeout函数的时候,要50ms后才会再次执行相应的函数,但是这个时候计算机是不会就这么一直等50ms,自然会执行func1中其余的语句,我们知道,计算机的执行速度是很快的,50ms对他来说应该算是很长的一段时间了,于是,这个时候,计算机就已经执行到func1中的compress()方法了,这个时候也执行到了setTimout函数了,开始等待50ms,于是就开始执行func2中的compress()方法,于是开始生成压缩包,但是这个时候执行func1方法是的zipFiles中已经就不包含testdir.zip文件了,这就导致最后生成的Test压缩包中不包含此文件。。。

 

解决办法就是

不要用setTimeout方法,直接循环zipFiles,让compress方法顺序的执行下去、、、

分享到:
评论

相关推荐

    Flex java blazeds 开中 遇到的问题大全

    2. **模拟Sleep函数**:Flex中没有内置的Sleep函数,但可以使用`flash.utils.setTimeout`来延迟执行函数,例如,如果你想2秒后执行一个函数,可以这样写:`setTimeout(launchAlert, 2000)`。 3. **动态指定DataGrid...

    Flex技术经验和问题总结

    ### Flex技术经验和问题总结 #### 一、保持按钮按下状态 在Flex中,要实现按钮在第一次按下时不立即弹起,而是等到下一次按下时才弹起的效果,可以通过设置`Button`组件的`toggle`属性来实现。当`toggle`属性被...

    flex 自动关闭的alert

    1. **计时器(Timer)**:JavaScript中的`setTimeout`函数可以用来设置一个延迟执行的任务,例如关闭Alert。开发者可以设置一个1500毫秒(即1.5秒)的计时器,当计时结束时触发关闭Alert的事件。 2. **状态管理**:...

    flex 设置背景音乐

    在Flex开发中,设置背景音乐是一个常见的需求,尤其是在游戏、交互式应用或娱乐软件中。本篇文章将基于提供的代码片段,深入探讨如何使用Flex技术来实现背景音乐功能。 #### 一、理解Flex背景音乐设置的基本原理 1...

    flex游戏引擎(pushbutton)-飞机发子弹

    本篇将深入探讨如何利用Flex游戏引擎中的PushButton组件来实现一个简单的飞机射击功能,即当用户点击按钮时,飞机发射子弹。 首先,我们要理解Flex中的PushButton组件。PushButton是用户界面中最常见的控件之一,它...

    flex as3 人物行走、详细注释、无废话代码

    10. **优化**: 为了提高性能,避免在`ENTER_FRAME`事件处理函数中进行复杂的计算,可以考虑使用时间间隔触发器(`setInterval`或`setTimeout`)来控制动画更新。 11. **调试与测试**: 良好的代码应该易于测试和调试...

    Flex面试.pdfFlex面试.pdf

    ### Flex技术面试知识点详解 #### 一、冒泡排序算法 **题目描述**: 写出一个升序排序的冒泡算法,将以下数组的内容【2,4,1,5,3】由大到小排列。 **解答**: 冒泡排序是一种简单的排序算法,它重复地遍历待...

    Flex中在Tree绑定数据后自动展开树节点的方法

    在Flex开发中,Tree组件是一种常用的控件,用于展示层级结构的数据。在实际应用中,我们经常需要在数据绑定到Tree之后自动展开所有的树节点,以便用户能够立即查看到完整的信息,而无需手动去逐个展开。下面将详细...

    flex动态加载swf皮肤示例代码

    2. 定时器的使用:在示例代码中,使用了setTimeOut()和clearTimeOut()函数来实现定时更换皮肤的功能。这表明开发者可以根据特定的时间间隔或事件触发皮肤的更换。 3. 用户交互:示例代码中通过按钮点击事件来触发...

    个人CSS设计兼容性问题总结教程

    本文将根据提供的内容,详细讲解一些常见的CSS设计在不同浏览器,特别是IE6-8中的兼容性问题及解决方案。 首先,我们关注的是按钮的兼容性问题。在IE6中,按钮元素可能会对后续元素产生额外影响,因此我们需要初始...

    nvrunning.rar_FlashMX/Flex源码_FlashMX_

    此外,压缩包中的文件"codefans.net"可能是一个链接或者资源说明,可能指向了更多关于FlashMX/Flex的学习资源或社区讨论,供用户进一步研究和交流。 总结来说,通过对“职业女性走路”Flash源码的学习,我们可以...

    前端面试常见问题规整.pdf

    ### 前端面试常见问题知识点汇总 #### 一、基础知识篇 **1.... 在前端开发中,实现元素的水平垂直居中是常见的需求之一。...以上是前端面试中常见的问题及其解答和相关知识点的总结,希望对你有所帮助。

    搜狗最新秋招Java笔试题.docx

    `setTimeout`函数在全局作用域中执行,因此其内的`i`值在所有定时器回调执行时都是4,打印结果为444,选A。 这些题目覆盖了编程基础、算法、语言特性以及Web开发的基础知识,是互联网公司校招笔试中常见的题型,对...

    前端大厂最新面试题-2020阿里UC前端社招面经.docx

    CSS 中有多种方式可以实现元素的垂直居中,例如使用 Flex 布局、Grid 布局、position 属性等。每种方式都有其优缺,选择哪种方式取决于具体的需求和场景。 8. Flex 布局的伸缩属性: Flex 布局是一种常用的布局方式...

    一个很好用的JS幻灯片效果

    5. **动画效果**:为了使切换更平滑,可以使用`setTimeout`或`setInterval`实现定时切换,配合CSS的`transition`属性创建过渡效果。更高级的,可以使用`requestAnimationFrame`实现更流畅的动画体验。 6. **CSS辅助...

    仿今日头条Nav.rar

    在这个案例中,可能会用到Flex布局,因为它在处理元素的对齐和分布方面非常灵活,可以轻松实现导航条的居中效果。 1. Flex布局:在父容器上设置`display: flex;`启动Flex布局,然后通过`justify-content: center;`...

    【前端面试】字节跳动一面二面试题+面经.pdf

    3. 题目5是关于CSS的`flex`属性,`flex: 0 1;`表示元素具有自动增长能力,但初始大小为0。 4. 题目6要求实现一个`flat`函数,将多维数组转换为一维数组。非递归实现可以使用`Array.prototype.reduce()`方法,逐步...

    搜狗最新秋招前端试题.docx

    - `setTimeout`的回调函数在事件队列中按顺序执行,此时`i`已变为4,因此输出`4444`。 10. **HTTP状态码**: - `304`:Not Modified,表示资源未更新。 - `302`:Found,临时重定向。 - `301`:Moved ...

    前端大厂最新面试题-2020伴鱼前端社招面经.docx

    setTimeout函数会在浏览器的下一个tick中执行,new Promise函数会在浏览器的下一个tick中执行。 七、this的输出 JavaScript中的this关键字是一种特殊的变量,表示当前执行的上下文。在上面的代码中,this.name的...

    jquery flexigrid 支持前台排序

    为了解决这些问题,我们可能需要对它们的默认行为进行一些调整,比如重写某些CSS规则,或者监听并处理特定的事件。 在实际项目中,可能还会涉及到数据的动态加载和更新。在这种情况下,每当新的数据被加载到表格中...

Global site tag (gtag.js) - Google Analytics