如何在JavaScript中链接两到三个第三方回调?

Rom*_*usi 1 javascript

Web应用程序页面包含两个大组件,它们在完全呈现时会调用回调.

问题是在两个组件完全呈现后调用函数.

这可以通过使用超时和轮询一些变量来解决,但我想应该有更好的方法.

让我们说,我有这样的:

function callMeAfterBothRendered() {...};
libA = libraryA($('.comp1'), {"rendered": function () {...}});
libB = libraryB($('.comp2'), {"rendered": function () {...}});
Run Code Online (Sandbox Code Playgroud)

我已经找到了链接承诺的一些材料,但不太确定如何应用于这种情况?

一个复杂的问题是,实际上这些库不是直接在同一个地方调用的(如上面简单示出的),而是在适配器"类"中更深层次的一些初始化方法中.

什么可以是这个的好解决方案,也可以很容易地推广到3个组件?

Dan*_*ite 5

承诺将是这里最好的方式.

function callMeAfterBothRendered() {...};
Promise.all([
    new Promise((resolve) => libraryA($('.comp1'), {"rendered": resolve })), 
    new Promise((resolve) => libraryB($('.comp2'), {"rendered": resolve }))
]).then(callMeAfterBothRendered);
Run Code Online (Sandbox Code Playgroud)