使用Promise.all在其他函数之后执行函数

Jul*_*n S 1 javascript promise

所有以前的功能完成后,我正在尝试执行我的函数HideEmptyTile.

到目前为止我一直在使用TimeOut,但这并不是我想要完成的正确方法.

这是我以前的代码:

        retrieveAccountOpenWithVisitObjectif(userId, processOpenWithVisitObjectif);
        retrieveAccountOpen(userId, processAccountOpen);
        retrieveAllActivitiesOpen(userId, processAllActivitiesOpen);
        setTimeout("HideEmptyTile()", 800); 
Run Code Online (Sandbox Code Playgroud)

经过一些研究后我发现我可以使用另一个回调函数,但似乎Promise.all已经构建了我的案例.所以我做了下一个代码:

Promise.all(
        retrieveAccountOpenWithVisitObjectif(userId, processOpenWithVisitObjectif),
        retrieveAccountOpen(userId, processAccountOpen),
        retrieveAllActivitiesOpen(userId, processAllActivitiesOpen)).then(HideEmptyTile()); 
Run Code Online (Sandbox Code Playgroud)

问题是,这不是我想要的行为,因为函数HideEmptyTile在其他函数之后没有执行.

我是以错误的方式使用Promise.all吗?

Ber*_*rgi 5

  • Promise.all 采取一系列承诺,而不是多个参数
  • then 接受一个函数(你已经调用它并传递结果)

Promise.all([
    retrieveAccountOpenWithVisitObjectif(userId, processOpenWithVisitObjectif),
    retrieveAccountOpen(userId, processAccountOpen),
    retrieveAllActivitiesOpen(userId, processAllActivitiesOpen)
]).then(HideEmptyTile);
Run Code Online (Sandbox Code Playgroud)