无论是使用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);
}
无论是调用同步函数还是调用异步函数,我都需要调用一个普通函数
这是我最初的写法,但这是不正确的,因为 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);
}