# any-promise 中文文档

规范地址：https://npmcn.com/package/any-promise/

版本：1\.3\.0
npm 元数据更新时间：2022-06-13T03:07:19.066Z
中文译文更新时间：2026-11-05T16:16:04.915Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/any-promise
原文对照：https://npmcn.com/package/any-promise/?lang=original
项目主页：http://github.com/kevinbeaty/any-promise
源码仓库：https://github.com/kevinbeaty/any-promise

## 关键信息（来自 npm 元数据）

- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：0 个
- 首次发布：2014-11-06T01:20:39.140Z
- 最新版本发布：2016-05-08T12:15:06.060Z
- 近 30 天下载量：226662238（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：8（近 12 个月 0 个）

## 中文简介

解决任何安装的ES6兼容承诺

## 安装

```sh
npm install any-promise
```

也可以使用：`pnpm add any-promise`、`yarn add any-promise`、`bun add any-promise`

## README

## 任何承诺

[![Build Status](https://secure.travis-ci.org/kevinbeaty/any-promise.svg)](http://travis-ci.org/kevinbeaty/any-promise)

让您的库支持任何 ES 2015 (ES6) 兼容性 `Promise` 并让申请作者选择。 申请可以 _可选择_ 注册首选 `Promise` 执行,并在需要时导出 `any-promise` 从图书馆代码.

如果没有登记首选项,则默认为全局 `Promise` 用于更新的Node.js版本. 浏览器版本默认为窗口 `Promise`,必要时进行多填充或登记.

### 用全球承诺:

假设全球 `Promise` 所期望的执行:

```bash
# Install any libraries depending on any-promise
$ npm install mz
```

已安装的图书馆将默认使用全球承诺 .

```js
// in library
var Promise = require('any-promise')  // the global Promise

function promiseReturningFunction(){
    return new Promise(function(resolve, reject){...})
}
```

### 登记使用:

假设 `bluebird` 承诺的履行:

```bash
# Install preferred promise library
$ npm install bluebird
# Install any-promise to allow registration
$ npm install any-promise
# Install any libraries you would like to use depending on any-promise
$ npm install mz
```

在申请条目中将首选位置登记在其它条目之前 `require` 装入的软件包 `any-promise`数字 :

```javascript
// top of application index.js or other entry point
require('any-promise/register/bluebird')

// -or- Equivalent to above, but allows customization of Promise library
require('any-promise/register')('bluebird', {Promise: require('bluebird')})
```

现在执行已注册, 您可以根据 `any-promise`数字 :

```javascript
var fsp = require('mz/fs') // mz/fs will use registered bluebird promises
var Promise = require('any-promise')  // the registered bluebird promise 
```

打电话很安全 `register` 但必须始终执行.

同样,注册是 _选项_。它只能由应用程序用户在覆盖全局时调用 `Promise` 需要执行.

### 可选申请登记

作为申请作者,你可以 _可选择_ 首选项 `Promise` 应用程序启动前执行 `require('any-promise')`数字 :

在接到任何电话之前,您必须登记您的优先选择 `require('any-promise')` (由您或需要的软件包),只有一个执行可以注册。 这种登记通常发生在申请入境点的顶端.

#### 登记快捷键

如果你使用一个已知的 `Promise` ,您可以使用快捷键登记您的首选项 :

```js
require('any-promise/register/bluebird')
// -or-
import 'any-promise/register/q';
```

快捷注册是首选的注册方法,因为它在浏览器和节点.js中有效. 与 `import` 和许多测试跑者, 这提供 `--require` 旗帜 :

```
$ ava --require=any-promise/register/bluebird test.js
```

目前已知的实施情况包括: `bluebird`, (中文(简体) ), `q`, (中文(简体) ), `when`, (中文(简体) ), `rsvp`, (中文(简体) ), `es6-promise`, (中文(简体) ), `promise`, (中文(简体) ), `native-promise-only`, (中文(简体) ), `pinkie`, (中文(简体) ), `vow` 财务报告和审定财务报表 `lie`。如果您没有使用已知的执行方法,可以使用下述另一种登记方法.

#### 基本登记

作为注册快捷键的替代办法,您可以拨打 `register` 带有首选项的函数 `Promise` 执行。 这种办法的好处是: `Promise` 库可以按名称要求,而不需要已知的执行。 此方法在浏览器中不起作用 。 用于 `any-promise` 在浏览器中使用注册快捷键或指定 `Promise` 使用高级注册的建筑师(见下文).

```javascript
require('any-promise/register')('when')
// -or- require('any-promise/register')('any other ES6 compatible library (known or otherwise)')
```

这种登记方法将试图检测 `Promise` 用于要求指定执行的构造器。 如果您想指定自己的建筑师,请查看高级注册.

#### 高级注册

要使用浏览器版本,您应当安装多填充,或者明确注册 `Promise` 构造器 :

```javascript
require('any-promise/register')('bluebird', {Promise: require('bluebird')})
```

这也可以用来登记习惯 `Promise` 执行或子类.

您的首选将在全球注册, 即使有多个版本 `any-promise` 安装在国家预防机制依赖树上,或正在使用浏览器中多个捆绑的JavaScript文件。 您可以在选项中绕过此全局注册 :

```javascript
require('../register')('es6-promise', {Promise: require('es6-promise').Promise, global: false})
```

### 图书馆的使用

用来使用任何 `Promise` 构造器,只需要它:

```javascript
var Promise = require('any-promise');

return Promise
  .all([xf, f, init, coll])
  .then(fn);


return new Promise(function(resolve, reject){
  try {
    resolve(item);
  } catch(e){
    reject(e);
  }
});

```

除下文指出的情况外,图书馆使用 `any-promise` 只应使用 [文档](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) 函数,因为无法保证申请人选择哪个执行。 图书馆不应该打电话 `register`,如果需要,只有应用程序用户才能拨打.

#### 高级图书馆使用

如果您的库需要基于注册执行的分支代码, 您可以使用 `var impl = require('any-promise/implementation')`时 `impl` 将是软件包名称( e)`"bluebird"`, (中文(简体) ), `"when"`如果登记, `"global.Promise"` 如果在 Node.js 上使用全局版本,或 `"window.Promise"` 如果使用浏览器版本。 您应当总是包含默认情况, 因为无法保证哪些软件包可以注册 .

### 对旧节点.js版本的支持

前节点.js版本 `v0.12` 可能含有错误的全局版本 `Promise`为此,全球 `Promise` 未自动装入这些旧版本。 如果使用 `any-promise` 在节点.js版本中 `<= v0.12`,用户应登记所期望的执行.

如果未登记一项实施工作, `any-promise` 将尝试发现已安装的 `Promise` 执行。 如果找不到执行文件, 就会出现错误 `require('any-promise')`。虽然自动发现通常避免出错,但它不是决定性的。 建议用户总是对更古老的Node.js版本的首选执行进行注册.

这种自动发现只供节点使用. 之前的jS版本 `v0.12`。任何更新版本将永远默认为全球 `Promise` 执行.

### 相关

-   [任何可观测](https://github.com/sindresorhus/any-observable) - 说吧 `any-promise` 为可观察者.

## 常见问题

### any-promise 是什么？

解决任何安装的ES6兼容承诺

### 如何安装 any-promise？

在项目目录运行 npm install any-promise，或使用 pnpm add / yarn add / bun add。

### any-promise 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### any-promise 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### any-promise 可以商用吗？

any-promise 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### any-promise 的下载量有多少？

根据 npm 官方下载统计，any-promise 在 2026/10/05 – 2026/11/03 这 30 天内被下载 226,662,238 次，日均约 7,555,408 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### any-promise 还在维护吗？

最新版本 1\.3\.0 发布于 2016/05/08（10 年前）；至今共发布 8 个版本，其中过去 12 个月发布了 0 个；首次发布于 2014/11/06。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

