【发布时间】:2017-11-01 01:24:38
【问题描述】:
我想在浏览器 JS 应用程序中使用 bluebird-q (https://github.com/petkaantonov/bluebird-q) 作为 Q 的 shim。这是不可能开箱即用的,因为 bluebird-q 库代码以 2 NodeJS 样式要求开头:
var Promise = require("bluebird/js/main/promise")();
var scheduler = require("bluebird/js/main/schedule");
这两个需求不能被整个库的需求替换(https://github.com/petkaantonov/bluebird/tree/v2.10.2#for-library-authors):
var Promise = require("bluebird");
Browserify 解决了这个问题,但在我看来这个解决方案不够方便:它需要构建步骤,使代码的可读性降低,一些静态代码扫描器无法按预期使用 browserified 代码和最重要的 bluebird 和 bluebird-q不能作为单独的脚本文件引用。
关于这个话题的两个问题:
1) 整个 bluebird 库不能按原样包含在 bluebird-q 中的原因是什么?
2) 在没有 browserify 的情况下,在浏览器中使用 bluebird-q 是否有更优雅的解决方案?
P.S.:我知道 bluebird 本身是为使用 browserify 的浏览器构建的:这个构建已经过正确测试。 bluebird-q 没有官方的 browserify 版本。
【问题讨论】:
-
为什么要使用 bluebird-q 而不是 bluebird 自己的 API?
-
有些现有代码依赖于 Q API,目前无法重构。
-
浏览一次,然后在别处包含该代码。
-
这是我目前正在做的,问题是关于更优雅的解决方案,它不会使用 browserify。
-
您只需浏览一次,然后将结果保存为脚本标签
标签: javascript browser promise q bluebird