我希望能够使用程序方法在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中是否还有其他选项以更多的程序/命令方式实现此类逻辑?