Javascript承诺,行为奇怪

时间:2019-03-04 17:30:49

标签: javascript promise

我有一个问题,我认为,对于某些人来说这确实很容易,但是我不明白为什么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'));

1 个答案:

答案 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'));