Javascript 如何在异步结果对象上执行对象操作?

Javascript 如何在异步结果对象上执行对象操作?,javascript,asynchronous,promise,Javascript,Asynchronous,Promise,我想知道如何从一个文件异步操作另一个文件中的JS对象。 我对异步代码原则没有太多经验 情况: 我有一个文件,app.js,我在其中基于HTML动态创建“应用程序面板” $("div.app-panel[data-panel]").each(function() { // create panel objects for all html divs with class app-panel var panel = {}; pan

我想知道如何从一个文件异步操作另一个文件中的JS对象。 我对异步代码原则没有太多经验

情况:
我有一个文件,
app.js
,我在其中基于HTML动态创建“应用程序面板”

$("div.app-panel[data-panel]").each(function() {
        // create panel objects for all html divs with class app-panel
        var panel = {};
        panel.div = $(this);
        panel.name = $(this).attr("data-panel");
        panel.isActive = ($(this).attr("data-active-panel") == "true" ? true : false);

        panel.onActive = () => {
            // default functionality to execute when activating an app panel
            panel.isActive = true;
            $(panel.div).attr("data-active-panel", true);
        };
        panel.onInactive = () => {
            // default functionality to execute when deactivating an app panel
            panel.isActive = false;
            $(panel.div).attr("data-active-panel", false);
        };

        app.panels.push(panel);
    });
现在我希望能够覆盖我的另一个文件,
main.js
中的onActive方法,但是我如何知道这段代码是否已经运行完毕? 我无法在app.panels上应用
.filter()
.find()
,它将返回未定义。 我可以
console.log(app.panels)
,它会将阵列返回到我的控制台。。。但我做不到:

panel = app.panels[0]
这将给我一个不明确的答案

我试图在object
app
内部创建一个函数,该函数接受一个回调函数,该函数将使用app.panels作为参数。然而,这给了我同样的结果

然后我试着用这种方法来解决这个问题:

app.getPanels = async () => {
    var promise = new Promise(function(resolve, reject) {
        resolve(app.panels);
    });
    return promise;
};


var getPanels = async (callBack) => {
    const appPanels = await Promise.all(app.getPanels());
    console.log(appPanels);
    callBack(appPanels);
}
这将引发错误“TypeError:对象不可编辑”


无论如何,我认为我的代码清楚地表明我根本不熟悉承诺,我做错了什么?

Promiser不是解决方案。这一切都与协调从不同文件加载的代码有关

典型的策略是:

  • 除“main.js”之外的所有.js文件都包含类/函数,但不执行任何操作
  • “main.js”通过创建类实例和调用函数/方法来协调一切
  • “main.js”将最后加载

    • Promiser不是这里的解决方案。这一切都与协调从不同文件加载的代码有关

      典型的策略是:

      • 除“main.js”之外的所有.js文件都包含类/函数,但不执行任何操作
      • “main.js”通过创建类实例和调用函数/方法来协调一切
      • “main.js”将最后加载

      我已经满足了所有这些要求,我还能做些什么?编辑:没关系,我的app.js会初始化应用程序面板,今晚我将在main.js中尝试这样做,只在main.js中执行代码。我修复了它,谢谢!我的荣幸。祝你好运。我已经满足了所有这些要求,我还能做什么?编辑:没关系,我的app.js会初始化应用程序面板,今晚我将在main.js中尝试这样做,只在main.js中执行代码。我修复了它,谢谢!我的荣幸。祝你好运。