据我所知,Promise用于表示异步操作的成功/失败。当我查看一个项目时,所有功能都将最终结果包装在“ Promise.resolve”中。我不明白,在'Promise.resolve'中包装所有函数结果有什么用。这里有用例吗?
例如,所有功能都在模板下面。
process = (data) => {
//Perform some operations.
return Promise.resolve(result);
}
答案 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。