Promise定义时就执行的问题和疑惑

想用promise.all同时执行两个异步方法,可promise定义时(如let p1 = wake(3000);)就执行了,就像下面的情况。promise.all怎么同时执行两个动作?
// 控制台环境下输入,两段分开

let wake = (time) => {
  return new Promise((resolve, reject) => {
    console.log(time);
    setTimeout(() => {
      console.log('time::::',time)
      resolve(`${time / 1000}秒后醒来`)
    }, time)
  })
}

let p1 = wake(3000); // 打印:3000;间隔3s打印: 3秒后醒来
let p2 = wake(2000); // 打印:2000;间隔2s打印: 2秒后醒来
// 此处敲回车并等待,结果如图

image.png

// 然后再输入如下内容,回车
Promise.all([p1, p2]).then((result) => {
  console.log(result)       // 立即输出[ '3秒后醒来', '2秒后醒来' ],没有其他console
}).catch((error) => {
  console.log(error)
})

如图:image.png

后面的promise.all(),只有接受promise的作用?那这种promise是不是没有意义?

待解决 悬赏分:20 - 离问题结束还有 556天23小时54分19秒
反对 0举报 0 收藏 0

我来回答

回答5