我有两个同时运行的函数,我想要一个回调只在最后一个完成时执行一次。
function gotoPage () {
//only call this once for the last one
}
app.update(gotoPage);
geolocation.getCurrentPosition(gotoPage);
我意识到我可以将它们嵌套用于顺序执行,但出于性能原因我不愿意这样做。 有效地做到这一点有一个巧妙的技巧吗?
答案 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);