javascript - 在已解决的 Promise 中调用 fn 有什么用?

标签 javascript

我见过有人这样做:

Promise.resolve().then(fn)

在很多地方,让我想知道为什么会出现这种情况?为什么他们不能直接调用 fn ?为什么要解析 Promise 然后调用 fn

最佳答案

您会在以下几种情况下执行此操作:

  1. 您需要返回/提供 promise 。 fn() 将产生 fn 的返回值(如果未指定,则返回 undefined)。但是 Promise.resolve().then(fn) 会产生一个 Promise。 (不过,如果他们只是想要一个 promise ,他们可以这样做 Promise.resolve(fn())。)

  2. 您需要确保对 fn 的调用异步发生(因为 Promise then/catch/finally 回调是异步的。

<小时/>

1 具体来说,它们作为微任务运行,在它们排队的宏任务结束后运行。 JavaScript 通过处理作业队列(也称为任务队列)来工作。在浏览器上,我们习惯于将“宏任务”视为从浏览器调用 JavaScript:主脚本运行、事件处理程序、计时器回调等。在宏任务期间调度的任何“微任务”都会运行,按顺序,就在当前宏任务结束之后但在下一个宏任务之前(即使它是在微任务之前安排的)。许多其他环境(例如 Node.js)的行为类似。

关于javascript - 在已解决的 Promise 中调用 fn 有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50657824/

相关文章:

javascript - 如何在我的 Titan 应用程序中获得此布局?

javascript - Turbolinks 5 [正确加载 Javascript]

javascript - Rails 手动调用特定的 js.rb

javascript - 将行添加到表的开头 - JavaScript - jQuery

javascript - 在 React.js 中,我如何从组件的字符串表示形式呈现组件?

JavaScript 拖放代理

JS RegEx 表达式的 C# 等效项

javascript - 滚动到 id 函数 jQuery

javascript - CSS 和 JS 缩小不适用于 gulp-filter、gulp-csso、gulp-uglify

javascript - 使用 jquery 切换对象的类