如何将简单的if-then从同步重写为异步?

时间:2015-06-09 20:03:41

标签: ajax asynchronous

我有这段代码:

if (condition) {
    syncAjax();
}
callAfterAjaxOnlyOnce();

我要重写为asyncAjax()。但这不行

if (condition) {
    asyncAjax(callback(){callAfterAjaxOnlyOnce();});
}

conditionfalse时,因为callAfterAjaxOnlyOnce()将被执行0次。这也不好

if (condition) {
    asyncAjax(callback(){callAfterAjaxOnlyOnce();});
}
callAfterAjaxOnlyOnce();

conditiontrue时,因为callAfterAjaxOnlyOnce()将被执行两次。如果我做

asyncAjax(callback(){
    if (condition) {
        callAfterAjaxOnlyOnce();
    }
});

这与原始代码不相同,因为我只想在asyncAjax为真的情况下执行condition

为了拥有完全相同的功能,是否可以重写它?

1 个答案:

答案 0 :(得分:1)

在if语句中使用return,以便在条件为真时不会执行任何操作。

if (condition) {
    return asyncAjax(callAfterAjaxOnlyOnce);
}
callAfterAjaxOnlyOnce();