一个onComplete回调,用于执行两个函数中的最后一个

时间:2018-03-29 15:47:39

标签: javascript function asynchronous callback

我有两个同时运行的函数,我想要一个回调只在最后一个完成时执行一次。

function gotoPage () {
  //only call this once for the last one
}
app.update(gotoPage);
geolocation.getCurrentPosition(gotoPage);

我意识到我可以将它们嵌套用于顺序执行,但出于性能原因我不愿意这样做。 有效地做到这一点有一个巧妙的技巧吗?

2 个答案:

答案 0 :(得分:2)

解决承诺:

Promise.all([
    new Promise(resolve => app.update(resolve)),
    new Promise(resolve => geolocation.getCurrentPosition(resolve)),
]).then(() => gotoPage());

你可以在这里阅读Promise:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises

答案 1 :(得分:1)

快速技巧是使用一个计算完成了多少函数的变量

var i = 0;

function gotoPage () {
   i++;

   if(i == requiredNumber) {
      // execute stuff

   } else { // some is pending }

  //only call this once for the last one
}
app.update(gotoPage);
geolocation.getCurrentPosition(gotoPage);