根据特定条件x
,我需要立即或在解决承诺asyncFunction
之后执行重定向:
if (x) {
await asyncFunction();
redirectToA();
}
redirectToA();
不过这真是太难看了。有没有办法简化这个代码,使redirectToA();
只出现一次?
我想你可以简单地这样做:
if (x) {
await asyncFunction();
}
redirectToA();
以下示例显示redirectToA()
将等待:
async function asyncFunction() {
return new Promise(resolve => {
setTimeout(() => {
resolve()
}, 3000)
})
}
function redirectToA() {
document.getElementById('status').innerText = "Redirected"
}
(async function() {
// your code is here
if (true) {
await asyncFunction()
}
redirectToA()
})()
<p id="status">
Running
</p>
这可能不是问题,但在这两种情况下,我倾向于在nextTick+调用redirectToA()
。
await (x ? asyncFunction() : Promise.resolve());
redirectToA();
因此,您可以更好地保证一致的重定向行为,并可能从较少的测试中受益。