有人可以向我解释在javascript中继续传递的概念吗? 我试着通过阅读http://nathansjslessons.appspot.com/lesson?id=1090并尝试解决给定的练习来理解它,但我似乎无法解决它。
这样做的正确方法是什么?
我试过了:
var bothC = function (fC, gC, success, failure) {
var f_success, f_failure;
f_success = function () {
success();
};
f_failure = function () {
var g_success, g_failure;
g_success = function () {
success();
};
g_failure = function () {
failure();
};
gC(g_success, g_failure);
};
fC(f_success, f_failure);
};
答案 0 :(得分:2)
我试过这个
不,你基本上只是复制重新实现了他们的seqC
功能。
这样做的正确方法是什么?
function bothC(fC, gC, success, failure) {
fC(function() {
gC(success, failure);
}, function() {
gC(failure, failure);
});
}
答案 1 :(得分:1)
这个练习的实用方法是定义一个这样的效用函数:
function pipe(f, g) {
return function(success, failure) {
f(function() {
g(success, failure)
}, failure)
}
}
这个高阶函数组成两个给定的函数,这样第二个函数只有在第一个函数成功时才会运行。现在bothC
的实现变得微不足道了:
var bothC = function (fC, gC, hC, success, failure) {
pipe(fC, gC)(success, failure);
};
多个参数也没问题:
var allC = function (funcList, success, failure) {
funcList.reduce(function(x, f) { return pipe(x, f)})(success, failure)
};