扫码关注官方订阅号
业精于勤,荒于嬉;行成于思,毁于随。
同时触发是正常的,因为你就是那样写的,看这里:
$.when(task1(),task2(),task3(),task4())
虽然用了when,但你确实是同时执行了task1(),task2(),task3(),task4()这四个函数,所以四个异步操作真心是同时触发的,没毛病!
when
task1()
task2()
task3()
task4()
补充:
如果你希望顺序执行上面4个异步任务,用下面这种方式:
var tasks = [ function() { var $d = $.Deferred(); setTimeout(function() { console.log('t1'); $d.resolve(); }, 1000); return $d.promise(); }, function() { var $d = $.Deferred(); setTimeout(function() { console.log('t2'); $d.resolve(); }, 1200); return $d.promise(); }, function() { var $d = $.Deferred(); setTimeout(function() { console.log('t3'); $d.resolve(); }, 1200); return $d.promise(); }, function() { var $d = $.Deferred(); setTimeout(function() { console.log('t4'); $d.resolve(); }, 1200); return $d.promise(); } ]; tasks.reduce((previous, p) => previous.then(p), $.Deferred().resolve());
又去看了下promise,恩,好像then方法我测试的时候写写少了return....真是瞎了眼...
task1().then(function(){ return task2() }).then(function(){ return task3() }).then(function(){ return task4() }).then(function(){ console.log('ok'); })
不知道它这个在线是不是有问题,我在项目中这么写是没问题的...把自己坑了一把http://jsfiddle.net/rq80vph0/
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
同时触发是正常的,因为你就是那样写的,看这里:
虽然用了
when,但你确实是同时执行了task1(),task2(),task3(),task4()这四个函数,所以四个异步操作真心是同时触发的,没毛病!补充:
如果你希望顺序执行上面4个异步任务,用下面这种方式:
又去看了下promise,恩,好像then方法我测试的时候写写少了return....真是瞎了眼...
不知道它这个在线是不是有问题,我在项目中这么写是没问题的...把自己坑了一把
http://jsfiddle.net/rq80vph0/