gpt4 book ai didi

javascript - bluebird.js P 和 Promise 全局变量不可用

转载 作者:行者123 更新时间:2023-11-30 17:17:39 25 4
gpt4 key购买 nike

我已经包含了 bluebird.js 脚本,如下所示: https://github.com/petkaantonov/bluebird#quick-start

所以现在我期待着:

The global variables Promise and P (alias for Promise) become available after the above script tag.

但是,检查全局 Promise 变量,我发现这是原生 Chrome 实现,而不是 bluebird promise。好吧,不覆盖 native 实现似乎是合乎逻辑的。但是,仍然没有事件来自 bluebird 的全局 P 变量。这是为什么?

我尝试的另一种选择是使用:

var prom = require("bluebird");

但是当我尝试要求时,它显示“错误:undefinedModule”。一个可能的原因是我正在使用 dojo,它有自己的模块加载器和定义/要求函数。所以这可能是某种名称冲突。

毕竟,主要问题仍然存在 - 当全局变量(Promise 和 P)不存在且 require 不起作用时,我如何使用 bluebird promises?

最佳答案

Bluebird 假定您的模块类似于节点,因此使用模块加载器。您可以欺骗它,让它认为不涉及任何模块。

这里有一个绕过这个限制的技巧:

首先 - 备份 require 函数并将其删除:

var oldRequire = require;
require = null

然后,包括 Bluebird 。

最后,恢复它。

var require = oldRequire

所以整个过程看起来像这样:

 <script>
var oldReq = require;
require = undefined;
</script>
<script src="bluebird.js"> </script>
<script>
require = oldReq;
oldReq = undefined;
</script>

关于javascript - bluebird.js P 和 Promise 全局变量不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25781812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com