JavaScript

时间:2017-06-11 06:12:32

标签: javascript

我希望能够使用程序方法在JavaScript中实现一些复杂的业务逻辑,这种方法存在于其他语言中,如Java或VB。

例如,可以使用过程式编程轻松实现以下伪代码:

function doThings(){
    var data = getDataFromApi1();
    var res=[];
    for(el of data) {
        if(getSomethingFromAPI2(e3)) 
            res.push(el);
        else
            if(getSomethingElseFromAPI3(e3))
                res.push(getSomethingDifferentFromAPI4(el));
    }
    return saveToSomeApi5(res);
}

但是由于JavaScript是事件驱动的事实,所有这些逻辑都需要以某种方式转化为对事件的反应。 所以,根据我的研究,我的选择是回调,承诺和异步/等待。但是这些方法都有缺点:

回调 - 我得到回调地狱,我也必须做奇怪的事情,比如通过递归处理数组。这一切都是复杂难以维护的代码。

Promises - 我必须将上面的代码拆分成单独的函数,因为每个下一个promise都取决于前一个的结果,所以我不能只用.then()s连接它们。代码被分成许多不遵循逻辑流程的部分,因此它也变得难以阅读。

Async / await - 我必须手动标记并以某种方式跟踪所有异步/等待函数和所有调用它们的函数,这看起来像是一项繁琐的工作。此外,他们都必须返回promise,所以我不能只将项目中的所有函数转换为async / await。

JavaScript中是否还有其他选项以更多的程序/命令方式实现此类逻辑?

0 个答案:

没有答案