嗯,很难解释。我将展示一个示例,以便更容易理解。
假设我html
有3 divs
:
<div id="a"></div>
<div id="b"></div>
<div id="c"></div>
我想为每个div
加载按钮并制作加载它们的函数:
function LoadA() {
$('#a').html('<button id="aB" > a Button </button>');
}
function LoadB() {
$('#b').html('<button id="bB" > b Button </button>');
}
function LoadC() {
$('#c').html('<button id="cB" > c Button </button>');
}
我有一个函数,在单击按钮时放置console.log()
:
function DisplayLog() {
$('button').on('click', function () {
console.log($(this).text());
});
}
好的,我可以这样做
function GeneralFunction() {
LoadA(function () {
LoadB(function () {
LoadC(function () {
DisplayLog();
})
})
})
}
因此,当我点击该功能时,log
中会显示console
。但在这种情况下,函数在函数后加载。我想异步加载它,所以我决定在Promise
:
function GeneralFunction() {
Promise.all([LoadA(), LoadB(), LoadC()]).then(function () {
DisplayLog();
})
}
但这不起作用。我认为因为加载这个函数没有改变DOM
(?),但我不确定。有什么提示可以解决这个问题吗?
以上代码仅用于帮助描述问题。