gpt4 book ai didi

javascript - 即使使用之前有效的代码,Bluebird 也不会调用 then()

转载 作者:太空宇宙 更新时间:2023-11-04 02:30:06 25 4
gpt4 key购买 nike

我正在为我 future 的作品构建一个易于管理的 Node 框架。它已经有一个配置模块。

我编写了一个错误处理程序并更新了要使用的配置。因为我不能像以前一样使用 .then() 方法。有趣的是,它不适用于之前的版本 (git checkout)

我不知道有什么解决办法。你是吗?

<小时/>

到目前为止我尝试过的:

  • 重新安装所有node_modules(也包括全局模块)
  • git checkout 到早期版本
  • 完全删除并重新安装 Node 和 npm
  • 重新安装所有node_modules(再次)
  • 多喝咖啡
  • 买很多啤酒送给他们以获得正确答案

我使用这个简单的脚本来测试 ConfigManager:

var Config = require('./core/server/config');

// Init the Config method
Config.load().then(function(){
// Write out the 'url'
console.log(Config.get('url'));
}

// Update: and I have to wait for processing or I get `undefined`
console.log(Config.get('url'));
// > undefined

如果我实时执行但没有 then() 方法,它会起作用:

var Config = require('./core/server/config');
// > undefined
Config.load();
// > { _bitField: 0, _fulfillmentHandler0: undefined, _rejectionHandler0: undefined, _promise0: undefined, _receiver0: undefined, _settledValue: undefined, _boundTo: undefined, _traceParent: undefined, _trace: [Error] }
Config.get('url');
// > 'http://127.0.0.1'
<小时/>

注意:ConfigManagerTryGhost/Ghost's module 有很多共同点。 .

最佳答案

我的错误。我真丢脸。

似乎当我提交/推送修复时,我不小心撤消了一些更改,大约半天后我才意识到......

这就是问题所在(这对初学者可能有帮助):

+   return new Promise(function(resolve, reject){
+ resolve(self._config);
- return new Promise(function () {
- return self._config;
});

更新:本杰明的解决方案要好得多。相同但更紧凑和清晰。谢谢!

return Promise.resolve(self._config);

关于javascript - 即使使用之前有效的代码,Bluebird 也不会调用 then(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27527565/

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