返回信息流```javascript
$("div.enter-icon").on("click",function(){
$("A").css({"opacity":"1"});
$("B").addClass("isclick");
$("C").addClass("isanimate");
setTimeout(function(){
$("D1,D2").animate({"opacity":"0"},500,"linear",function(){
$("E").hide(200,function(){
$("F").css({"opacity":"1"}).animate({"width":"70%"},500,function(){
console.log("1");
});
});
});
},1500);
});
```
执行这段代码 console.log一共输出了4次1,知道setTimeout会把方法内的代码送到队列来执行,但是为什么会执行4次呢。。
另外 用jq的时候经常想要当一件事完成之后,去做另一件事,用when().then()比较好吗?现在一直在依赖各种方法的回调函数。感觉不太妥当。。
这是一条镜像帖。来源:北邮人论坛 / www-technology / #37567同步于 2016/7/5
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖
这段代码中 为什么console.log执行了4次呢
matsunatsuri
2016/7/5镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
粗略看了下,4个延时,对应4个输出吧。
然后想要一件事情做完做下一件事,jq的when,then是可以的不过限制不少。可以用用promise,或者es6/7本身支持的同步写法
【 在 matsunatsuri (kumako) 的大作中提到: 】
: [md]
: ```javascript
: $("div.enter-icon").on("click",function(){
: ...................
测试了下 $("D1,D2")这样对两个元素进行操作,好像会触发两次,改成 $("D1")后console.log会执行两次,不太明白原理。。我去学习下promise用法吧 感谢~
【 在 PiEgg 的大作中提到: 】
: 粗略看了下,4个延时,对应4个输出吧。
: 然后想要一件事情做完做下一件事,jq的when,then是可以的不过限制不少。可以用用promise,或者es6/7本身支持的同步写法
楼主提问题的时候可以想想怎么能方便别人复现这个问题...你不贴方便复现的例子就意味着别人没法刚你找到问题所在.
http://sumyblog.me/2015/11/12/problem-with-short-selfcontained-correct-example/
http://stackoverflow.com/help/mcve
————
微博 @flowmemo , 现在主要写JavaScript. 关注广泛, 欢迎交流.
此签名通过「北邮人签名档」脚本发送
楼主提问题的时候可以想想怎么能方便别人复现这个问题...你不贴方便复现的例子就意味着别人没法刚你找到问题所在.
http://sumyblog.me/2015/11/12/problem-with-short-selfcontained-correct-example/
http://stackoverflow.com/help/mcve
————
微博 @flowmemo , 现在主要写JavaScript. 关注广泛, 欢迎交流.
此签名通过「北邮人签名档」脚本发送
下次提问时会注意的。。感觉这个问题中复现意义不大啊,不是表现的问题,
感觉到是延时和回调引起的,但是不知道该查哪方面的资料。。下次提问时会附上demo的
【 在 e97ace 的大作中提到: 】
: 楼主提问题的时候可以想想怎么能方便别人复现这个问题...你不贴方便复现的例子就意味着别人没法刚你找到问题所在.
: http://sumyblog.me/2015/11/12/problem-with-short-selfcontained-correct-example/
: http://stackoverflow.com/help/mcve
: ...................