两者似乎都在做同样的事情,即计算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()始终作为返回值返回。你还是会得到的!
说到,我尝试了同样的方法:undefinedreturn '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 日,我可以看到的四个主要区别是: