两者似乎都在做同样的事情,即计算f(g(h(x)))
,当这样调用时或。async.compose
(f, g, h)
_.compose
(f, g, h)
这两个调用有什么区别吗?
两者似乎都在做同样的事情,即计算f(g(h(x)))
,当这样调用时或。async.compose
(f, g, h)
_.compose
(f, g, h)
这两个调用有什么区别吗?
顾名思义,async.compose
组成异步函数。
它通过回调参数获取结果,而不是返回值。
我遇到了同样的情况,我需要从某个库获得的一个函数来使用async.compose()
调用的返回值。所以我确实想知道:如何从 中获取返回值async.compose()
?
如果你写:
var gotFromAsyncCompose = async.compose(
function(gotParam, callback) {
callback(null, 'hi ' + gotParam + '!';
},
function(name, callback) {
callback(null, name.toUpperCase());
}
);
var returnValue = gotFromAsyncCompose('moe', function(err, result){
return result;
});
console.log(returnValue);
您将获得undefined
的值returnValue
。
因此,即使最后执行的语句是,也async.compose()
始终作为返回值返回。你还是会得到的!
说到,我尝试了同样的方法:undefined
return 'A';
undefined
_.compose()
var w = _.compose(
function(name){
return 'hi '+name;
},
function(got){
return got.toUpperCase() +'!';
});
);
var returnValue = w('moe');
console.log(returnValue);
这一次,您得到'hi MOE!'
的值与预期的一样returnValue
。你不会undefined
像async.compose()
.
我没有编写任何这些 compose 函数,但似乎两者之间的区别似乎是async.compose()
不会返回任何值,而_.compose()
会返回您return
在最后执行的函数中传递的值。
但是,还有另一个区别:_.compose()
不处理您在函数内部进行的任何异步调用。您只需在构成_.compose()
.
截至 2014 年 4 月 28 日,我可以看到的四个主要区别是: