无论是使用Promises执行同步函数还是异步函数,如何有效地调用一个公共函数?

How to call a common function effectively whether synchronous or asynchronous function is executed using Promises?

无论是调用同步函数还是调用异步函数,我都需要调用一个普通函数

这是我最初的写法,但这是不正确的,因为 foo 将在异步函数完成之前被调用。

function main(element) {
  if (element.id === 'sync') {
    syncFunction();
  } else {
    asyncFunction();
  }
  foo();
}

所以,我想到了这个,但在这里我觉得我重复调用 foo 的次数太多了。有没有更好的方法?

function main(element) {
  if (element.id === 'sync') {
    syncFunction();
    foo();
  } else {
    asyncFunction().then(() => {
      foo();
    });
  }
}

我可以使用 async/await and refactor this even better but where this code eventually will run doesn't support it。有没有办法使用 promises 更好地编写此代码?

如果将调用结果放入Promise.resolve(),则可以无条件地将.then链接到它上面。

function main(element) {
    Promise.resolve((element.id === 'sync' ? syncFunction : asyncFunction)())
        .then(foo);
}