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此答案没有添加任何内容,因为其他答案之一已经提出了使用三元运算符的建议。此答案没有添加任何内容,因为其他答案之一已经提出了使用三元运算符的建议。