Promise.resolve()立即执行函数执行顺序问题?

const f = () => console.log("now");
(() => Promise.resolve(f()))();
console.log("next");

输出

// now
// next

使用IFEE包裹 Promise.resolve() 之后,先于console.log("next");执行,这块不是很明白,有大佬能讲解下吗?谢谢

阅读 2.1k
2 个回答

你想要的效果可能是这样?

const f = () => console.log("now");
Promise.resolve(f).then(fn => fn())
console.log("next");

你里面把 f() 执行结果当做参数传入了,Promise.resolve 是立即执行的,所以 f() 也立即执行了。但是 resolve().then() 里面的方法会放到任务队列

传入 Promise 的函数都会立即执行,这是规范。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题