我有一个问题,我认为,对于某些人来说这确实很容易,但是我不明白为什么Javascript这样表现。 控制台下面的代码按顺序记录“ c,a,b,d”。为什么会这样?
var doSomething = function() {
return new Promise((res, rej) => {
res();
});
}
var doSomethingElse = function(par) {
console.log(par);
}
doSomething().then(function() {
return doSomethingElse('a');
});
doSomething().then(function() {
doSomethingElse('b');
});
doSomething().then(doSomethingElse('c'));
doSomething().then(() => doSomethingElse('d'));
答案 0 :(得分:1)
在doSomething().then(doSomethingElse('c'));
中,doSomethingElse立即执行
如果您延迟了承诺响应,您将看到时差。
var doSomething = function() {
return new Promise((res, rej) => {
setTimeout(()=> res(),3000);
});
}
var doSomethingElse = function(par) {
console.log(par);
}
doSomething().then(function() {
return doSomethingElse('a');
});
doSomething().then(function() {
doSomethingElse('b');
});
doSomething().then(doSomethingElse('c'));
doSomething().then(() => doSomethingElse('d'));