在做项目的过程中,碰到这么个问题:
在一个函数中,执行的是压缩一个目录:
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方法顺序的执行下去、、、
分享到:
相关推荐
2. **模拟Sleep函数**:Flex中没有内置的Sleep函数,但可以使用`flash.utils.setTimeout`来延迟执行函数,例如,如果你想2秒后执行一个函数,可以这样写:`setTimeout(launchAlert, 2000)`。 3. **动态指定DataGrid...
### Flex技术经验和问题总结 #### 一、保持按钮按下状态 在Flex中,要实现按钮在第一次按下时不立即弹起,而是等到下一次按下时才弹起的效果,可以通过设置`Button`组件的`toggle`属性来实现。当`toggle`属性被...
1. **计时器(Timer)**:JavaScript中的`setTimeout`函数可以用来设置一个延迟执行的任务,例如关闭Alert。开发者可以设置一个1500毫秒(即1.5秒)的计时器,当计时结束时触发关闭Alert的事件。 2. **状态管理**:...
在Flex开发中,设置背景音乐是一个常见的需求,尤其是在游戏、交互式应用或娱乐软件中。本篇文章将基于提供的代码片段,深入探讨如何使用Flex技术来实现背景音乐功能。 #### 一、理解Flex背景音乐设置的基本原理 1...
本篇将深入探讨如何利用Flex游戏引擎中的PushButton组件来实现一个简单的飞机射击功能,即当用户点击按钮时,飞机发射子弹。 首先,我们要理解Flex中的PushButton组件。PushButton是用户界面中最常见的控件之一,它...
10. **优化**: 为了提高性能,避免在`ENTER_FRAME`事件处理函数中进行复杂的计算,可以考虑使用时间间隔触发器(`setInterval`或`setTimeout`)来控制动画更新。 11. **调试与测试**: 良好的代码应该易于测试和调试...
### Flex技术面试知识点详解 #### 一、冒泡排序算法 **题目描述**: 写出一个升序排序的冒泡算法,将以下数组的内容【2,4,1,5,3】由大到小排列。 **解答**: 冒泡排序是一种简单的排序算法,它重复地遍历待...
在Flex开发中,Tree组件是一种常用的控件,用于展示层级结构的数据。在实际应用中,我们经常需要在数据绑定到Tree之后自动展开所有的树节点,以便用户能够立即查看到完整的信息,而无需手动去逐个展开。下面将详细...
2. 定时器的使用:在示例代码中,使用了setTimeOut()和clearTimeOut()函数来实现定时更换皮肤的功能。这表明开发者可以根据特定的时间间隔或事件触发皮肤的更换。 3. 用户交互:示例代码中通过按钮点击事件来触发...
本文将根据提供的内容,详细讲解一些常见的CSS设计在不同浏览器,特别是IE6-8中的兼容性问题及解决方案。 首先,我们关注的是按钮的兼容性问题。在IE6中,按钮元素可能会对后续元素产生额外影响,因此我们需要初始...
此外,压缩包中的文件"codefans.net"可能是一个链接或者资源说明,可能指向了更多关于FlashMX/Flex的学习资源或社区讨论,供用户进一步研究和交流。 总结来说,通过对“职业女性走路”Flash源码的学习,我们可以...
### 前端面试常见问题知识点汇总 #### 一、基础知识篇 **1.... 在前端开发中,实现元素的水平垂直居中是常见的需求之一。...以上是前端面试中常见的问题及其解答和相关知识点的总结,希望对你有所帮助。
`setTimeout`函数在全局作用域中执行,因此其内的`i`值在所有定时器回调执行时都是4,打印结果为444,选A。 这些题目覆盖了编程基础、算法、语言特性以及Web开发的基础知识,是互联网公司校招笔试中常见的题型,对...
CSS 中有多种方式可以实现元素的垂直居中,例如使用 Flex 布局、Grid 布局、position 属性等。每种方式都有其优缺,选择哪种方式取决于具体的需求和场景。 8. Flex 布局的伸缩属性: Flex 布局是一种常用的布局方式...
5. **动画效果**:为了使切换更平滑,可以使用`setTimeout`或`setInterval`实现定时切换,配合CSS的`transition`属性创建过渡效果。更高级的,可以使用`requestAnimationFrame`实现更流畅的动画体验。 6. **CSS辅助...
在这个案例中,可能会用到Flex布局,因为它在处理元素的对齐和分布方面非常灵活,可以轻松实现导航条的居中效果。 1. Flex布局:在父容器上设置`display: flex;`启动Flex布局,然后通过`justify-content: center;`...
3. 题目5是关于CSS的`flex`属性,`flex: 0 1;`表示元素具有自动增长能力,但初始大小为0。 4. 题目6要求实现一个`flat`函数,将多维数组转换为一维数组。非递归实现可以使用`Array.prototype.reduce()`方法,逐步...
- `setTimeout`的回调函数在事件队列中按顺序执行,此时`i`已变为4,因此输出`4444`。 10. **HTTP状态码**: - `304`:Not Modified,表示资源未更新。 - `302`:Found,临时重定向。 - `301`:Moved ...
setTimeout函数会在浏览器的下一个tick中执行,new Promise函数会在浏览器的下一个tick中执行。 七、this的输出 JavaScript中的this关键字是一种特殊的变量,表示当前执行的上下文。在上面的代码中,this.name的...
为了解决这些问题,我们可能需要对它们的默认行为进行一些调整,比如重写某些CSS规则,或者监听并处理特定的事件。 在实际项目中,可能还会涉及到数据的动态加载和更新。在这种情况下,每当新的数据被加载到表格中...