首先设立两个异步的函数
var wait1 = function(){
var dfd = $.Deferred();
function task(){
console.log("task 1 completed");
dfd.resolve();
}
setTimeout(task,4000);
console.log("task 1 start")
return dfd.promise();
}
var wait2 = function(){
var dfd = $.Deferred();
function task(){
console.log("task 2 completed");
dfd.resolve();
}
setTimeout(task,4000);
console.log("task 2 start");
return dfd.promise();
}
代码段1:
var p1 = wait1();
var p2 = p1.done(function(){
console.log("task 1 done");
return wait2();
});
p2.done(function(){
console.log("task 2 done");
});
代码段2:
var p1 = wait1();
p1.done(function () {
console.log('task 1 done');
var p2 = wait2();
p2.done(function () {
console.log('task 2 done');
});
});
代码段3:
var p1 = wait1();
var p2 = p1.pipe(function(){
console.log("task 1 done");
return wait2();
});
p2.done(function(){
console.log("task 2 done");
});
求解,为什么代码段1的运行结果不一样
var wait1 = function(){
var dfd = $.Deferred();
function task(){
console.log("task 1 completed");
dfd.resolve();
}
setTimeout(task,4000);
console.log("task 1 start")
return dfd.promise();
}
var wait2 = function(){
var dfd = $.Deferred();
function task(){
console.log("task 2 completed");
dfd.resolve();
}
setTimeout(task,4000);
console.log("task 2 start");
return dfd.promise();
}
代码段1:
var p1 = wait1();
var p2 = p1.done(function(){
console.log("task 1 done");
return wait2();
});
p2.done(function(){
console.log("task 2 done");
});
代码段2:
var p1 = wait1();
p1.done(function () {
console.log('task 1 done');
var p2 = wait2();
p2.done(function () {
console.log('task 2 done');
});
});
代码段3:
var p1 = wait1();
var p2 = p1.pipe(function(){
console.log("task 1 done");
return wait2();
});
p2.done(function(){
console.log("task 2 done");
});
求解,为什么代码段1的运行结果不一样

