Javascript 有更好的条件setTimeout模式吗?
我有以下代码:Javascript 有更好的条件setTimeout模式吗?,javascript,Javascript,我有以下代码: if (isFlyoutAnimationDisabled) { flyOut(); } else { setTimeout(flyOut, 250); } 似乎在每个if条件下都应该有比调用弹出按钮更好的模式。对我来说似乎是浪费并且污染了代码 有更好的方法吗?超级可读 if (isFlyoutAnimationDisabled) { flyOut(); } else { setTimeout(flyOut, 250); } 使用三元运算符?: setTime
if (isFlyoutAnimationDisabled) {
flyOut();
} else {
setTimeout(flyOut, 250);
}
似乎在每个if
条件下都应该有比调用弹出按钮更好的模式。对我来说似乎是浪费并且污染了代码
有更好的方法吗?超级可读
if (isFlyoutAnimationDisabled) {
flyOut();
} else {
setTimeout(flyOut, 250);
}
使用三元运算符?:
setTimeout(flyOut, isFlyoutAnimationDisabled ? 0 : 250);
但是使用上面的代码,你应该考虑<代码> SETTIMEOUT(FN,0)将作为“NeXTICK”来执行这个看似意外的结果
fn=()=>console.log(“A”);
设置超时(fn,0)/“A”
console.log(“B”);//“B”
//看控制台代码>超级可读
if (isFlyoutAnimationDisabled) {
flyOut();
} else {
setTimeout(flyOut, 250);
}
使用三元运算符?:
setTimeout(flyOut, isFlyoutAnimationDisabled ? 0 : 250);
但是使用上面的代码,你应该考虑<代码> SETTIMEOUT(FN,0)将作为“NeXTICK”来执行这个看似意外的结果
fn=()=>console.log(“A”);
设置超时(fn,0)/“A”
console.log(“B”);//“B”
//看控制台代码>如果可以使用承诺,条件很简单:
function delay(t) {
return new Promise(resolve => setTimeout(resolve, t));
}
async function example() {
if (!isFlyoutAnimationDisabled)
await delay(250);
flyOut();
}
// or without async/await:
function example() {
return (isFlyoutAnimationDisabled
? Promise.resolve()
: delay(250)
).then(flyOut);
}
如果可以使用承诺,条件很简单:
function delay(t) {
return new Promise(resolve => setTimeout(resolve, t));
}
async function example() {
if (!isFlyoutAnimationDisabled)
await delay(250);
flyOut();
}
// or without async/await:
function example() {
return (isFlyoutAnimationDisabled
? Promise.resolve()
: delay(250)
).then(flyOut);
}
使用三元运算符,例如:
isFlyoutAnimationDisabled ? flyOut() : setTimeout(flyOut, 250);
使用三元运算符,例如:
isFlyoutAnimationDisabled ? flyOut() : setTimeout(flyOut, 250);
如果需要,则字面上没有<这里使用了代码>承诺
,避免了并发问题。灵感来自@Bergi的回答
如果需要,则字面上没有<这里使用了代码>承诺
,避免了并发问题。灵感来自@Bergi的答案。有多少个条件?isFlyoutAnimationDisabled?flyOut():setTimeout(flyOut,250);如果一个孩子能读懂你的5行,我认为代码是完美的。如果不知道周围的环境(没有看到更多污染性代码),是否必须同步调用弹出按钮
,或者您会接受设置超时(弹出按钮,isFlyoutAnimationDisabled?250:0)
。。你的代码比所有答案都好。在这里,您正在同步和异步代码之间创建一个分支,这就是实现它的模式。完全同意@Roko C.Buljan有多少条件?isFlyoutAnimationDisabled?flyOut():设置超时(flyOut,250);如果一个孩子能读懂你的5行,我认为代码是完美的。如果不知道周围的环境(没有看到更多污染性代码),是否必须同步调用弹出按钮
,或者您会接受设置超时(弹出按钮,isFlyoutAnimationDisabled?250:0)
。。你的代码比所有答案都好。在这里,您正在同步和异步代码之间创建一个分支,这就是实现它的模式。完全同意@Roko C.Buljan此答案没有添加任何内容,因为其他答案之一已经提出了使用三元运算符的建议。此答案没有添加任何内容,因为其他答案之一已经提出了使用三元运算符的建议。