我正在学习redux saga,但以下内容并没有说明作者的意思:
与redux thunk相反,您不会陷入回调地狱,可以轻松测试异步流,并且操作保持纯净。
“回调地狱”和“纯粹行动”的任何示例将不胜感激。
纯函数是一种函数类型,当给定相同的参数时,它将始终产生相同的结果,并且不会修改其范围外的任何变量。例如,
function addTwoIntegers(a, b) {
return a + b;
}
如果我们传递a = 2和b = 3,则结果将始终为5。这是一件好事,因为它使测试该功能更加容易-我们可以肯定地知道它们对于给定输入对的输出。
与此形成对比的是,例如,一个函数从API加载数据并将其分配给变量:
let result;
function AddIntegerToNumberFromServer(a) {
fetch('api/numberGenerator').then(function(res) {
result = a + res.data.number;
});
}
在这种情况下,我们可以多次使用相同的参数调用该函数,而不必确定获得相同的结果。这样的结果是该函数很难测试-我们可能必须创建api的模拟。我们还必须确定结果的初始值是多少,以便知道我们的职能是否按计划进行。
您可能知道,回调是我们作为参数传递给另一个函数的函数,因此我们可以将某些代码的执行推迟到第二个函数完成为止。当我们对此进行深入研究时,就会发生回调地狱-正如jQuery上方的某人所评论的那样,它似乎邀请了这种样式-例如:
$(function() {
$('#element').click(function() {
$(this).fadeOut(function() {
$('#anotherElement').fadeIn();
}
}
}
这里的问题主要是人类对代码的理解以及易于阅读的问题之一。试想一下,如果这进一步深入(并非罕见),弄清正在发生的事情和时间将是多么困难。
在回调方面,重做Redux的人远不是罪魁祸首,可以通过使用Promise而不是回调来减轻可读性。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句