var test = function(){ var exec = function(param){ var def = $.Deferred(); setTimeout(function(){ console.info(param); def.resolve(); }, 2000); return def.promise(); } return exec("第一步执行").done(exec("第二步执行")); }; test().done(function(){ console.info("结束"); });
输出:
本意是想输出:第一步、第二步、结束
如果使用$.when(...)把第一步和第二步同时执行的话是可以的,但问题是这两个必须有先有后
迷惑,不解
如上,done的参数一般是一个function,而不是一个Promise。如果你想要连续执行的话,请考虑如下写法:
var test = function(){ var exec = function(param){ var def = $.Deferred(); setTimeout(function(){ console.info(param); def.resolve(); }, 2000); return def.promise(); } return exec("第一步执行").then(()=>exec("第二步执行")); }; test().then(function(){ console.info("结束"); });
这样确实可以!虽然IDE有错误提示,但运行没问题
求 ()=> 的解释,头一次见到,万谢!
@网无忌: es6的语法,不推荐使用
@网无忌: ES6语法,建议开始时使用。如果是node平台,直接可用。否则,请用babel转换为ES5。
有两个问题