【问题标题】:Best way to create a Promise from synchronous code?从同步代码创建 Promise 的最佳方法?
【发布时间】:2018-03-12 22:58:59
【问题描述】:

假设我有一个同步函数foo(),它会返回一些结果。如果我去会有什么显着的不同吗

return Promise.resolve(foo());    // code runs within Promise.resolve

对比

var result = foo();               // code runs outside of any Promise stuff
return Promise.resolve(result);

【问题讨论】:

  • 显然我在完成问题之前按错了按钮。天哪,3 分钟内投了 4 票?
  • 请注意,Promise.resolve 本身只是另一个同步函数,无论您在那里调用的函数是否带有中间变量,它都没有任何区别。我想你对 Promise 有一个严重的误解,你能详细说明“代码在 Promise.resolve 中运行”是什么意思吗?
  • @Bergi 不会说我误解 Promise,只是对某些细微之处缺乏了解。 :-) 您的回答非常好,指出Promise.resolve() 本身是同步的 确实澄清了事情。您可能希望将其作为“真实”的答案。
  • 我不确定你认为它还有什么作用?但可能不仅仅是微妙之处。

标签: javascript promise


【解决方案1】:

有什么明显的区别

没有。

在一种情况下,您将foo() 的结果保存到一个变量中。如果您需要将它用于其他用途,或者如果多行性质和命名变量使复杂的代码更易于理解,这可能会很有用。在另一种情况下,foo() 仍在生成返回值,您只是没有保存对它的引用。如果您不需要在其他任何地方使用它,并且您认为代码本身是可以理解的,那么也可以。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-29
    • 2019-10-25
    • 2022-09-30
    • 1970-01-01
    • 2020-06-01
    • 1970-01-01
    • 2016-08-18
    • 1970-01-01
    相关资源
    最近更新 更多