【发布时间】:2023-03-05 00:44:01
【问题描述】:
我有以下课程:
let graphFactory = new GraphFactory();
function GraphFactory(){
let value = 'something';
this.release = function() {
return value;
}
}
现在,当我尝试以这种方式从程序中的另一个位置调用此函数时:
let newvalue = graphFactory.release();
它无法识别graphFactory,因为加载此函数需要一些时间。
我想通过在graphFactory 完全加载和激活时发出一个承诺来解决这个问题,但是当我尝试将一个函数添加到GraphFactory 函数中时,比如
function GraphFactory(){
let value = 'something';
this.release = function() {
graphFactoryPromise(value);
}
}
然后
function graphFactoryPromise() {
return new Promise(function(resolve,reject) {
resolve('loaded');
});
}
并将其称为
graphFactoryPromise().then(function(result) {
let newvalue = result;
});
它仍然不起作用(graphFactory 无法识别)。
什么是解决这个问题的好方法?
更新
我想要的是只有在定义并加载了graphFactory 之后才能调用函数graphFactory.release()。
【问题讨论】:
-
"*加载此函数需要一些时间。" - 究竟是在哪里加载的?您显示的代码中没有任何内容是异步的
-
如果函数花费时间它必须已经有回调或承诺。
-
请添加“加载
graphFactory”的代码。目前还不清楚你在做什么。你是在异步加载valueinsideGraphFactory,还是加载整个模块文件,或者别的什么?
标签: javascript promise es6-promise