isPromise
判断一个值是否为 Promise 或具有 `then` 方法
101 bytes
since v12.1.0
用法
isPromise 函数通过检查值是否具有 then 方法来判断其是否为 “类 Promise” 对象。
import * as _ from 'radashi'
_.isPromise({ then: () => {} }) // => true_.isPromise(new Promise(() => {})) // => true_.isPromise(Promise.resolve(1)) // => true_.isPromise(Promise.reject(new Error('nope'))) // => true
_.isPromise('hello') // => false_.isPromise({}) // => false这种方法适用于识别符合 Promise 接口但并非实际 Promise 实例的对象。它在以下场景中特别有用:
- 需要快速检查某个值是否为 thenable 对象而无需实际解析它
- 性能至关重要,希望避免
Promise.resolve的开销 - 正在使用自定义 Promise 实现或使用类 Promise 对象的第三方库
虽然通常推荐使用 Promise.resolve 来统一处理 Promise 和非 Promise 值,但当您需要基于值是否为类 Promise 对象来做决策(而不实际解析或链式调用它)时,isPromise 会是更好的选择。这在类型检查场景或实现需要区分值是立即可用还是需要等待的控制流时尤其有用。