为什么以及何时使用Promise.resolve?

时间:2019-02-16 14:00:54

标签: javascript node.js promise

据我所知,Promise用于表示异步操作的成功/失败。当我查看一个项目时,所有功能都将最终结果包装在“ Promise.resolve”中。我不明白,在'Promise.resolve'中包装所有函数结果有什么用。这里有用例吗?

例如,所有功能都在模板下面。

process = (data) => {
  //Perform some operations.
  return Promise.resolve(result);
} 

1 个答案:

答案 0 :(得分:4)

使用Promise.resolve的唯一原因是将可能作为承诺的值转换为承诺。

Promise.resolve(value)是执行new Promise(resolve => resolve(value)的一种便捷方法。如果该值是一个promise,则将其返回;如果它是来自userland promise库的一个promise,则将其转换为本机promise。如果它是纯值,则将转换为该值实现的承诺。

Promise.resolve(5); // returns a promise fulfilled with the number 5.

这在某些情况下很有用,例如:   -如果函数可能返回承诺,则它应始终返回承诺-例如,如果您具有缓存值,则可能需要Promise.resolve d。  -如果功能的实现有多种且某些实现是同步的,则会创建一个统一的接口。

请注意,实际上,async函数并不需要那么多了,因为异步函数总是返回一个Promise-即使您return的纯值(实际上,从异步函数是Promise.resolve的隐式对象。)

还请注意,特别是如果函数仅做同步计算,则不应使函数返回promise,因为返回promise的函数意味着JavaScript中的I / O。