Javascript 何时可以使用lodash.after()?
我是函数式编程的新手,有人推荐我去理解主要的高阶函数 浏览lodash API文档时,我无法理解forJavascript 何时可以使用lodash.after()?,javascript,functional-programming,lodash,Javascript,Functional Programming,Lodash,我是函数式编程的新手,有人推荐我去理解主要的高阶函数 浏览lodash API文档时,我无法理解for.after(): 上面的示例代码没有实现asyncSave(),因此我应该自己实现该函数。但我不知道如何实施它。这是因为我不理解\uUafter()本身的规范 如果有人能比API文档所说的更简单地解释这个函数,那就太好了。或者,一个简单易懂且实用的函数示例将是一个很大的帮助。谢谢 。之后将countn和functionf作为参数,并返回一个新函数,我们可以调用该函数(用于“f prime”)。
.after()
:
上面的示例代码没有实现asyncSave()
,因此我应该自己实现该函数。但我不知道如何实施它。这是因为我不理解\uUafter()
本身的规范
如果有人能比API文档所说的更简单地解释这个函数,那就太好了。或者,一个简单易懂且实用的函数示例将是一个很大的帮助。谢谢
。
之后将countn
和functionf
作为参数,并返回一个新函数,我们可以调用该函数(用于“f prime”)。函数fp
可以记录调用的次数。只要调用fp
的次数小于n
,调用fp
不会产生任何效果(除了保留调用次数)。一旦调用fp
的次数等于或大于n
,则调用f
因此:
函数asyncSave
可以对给定类型的数据(传递给它的对象中的type
字段)异步执行保存操作,并且在完成保存操作后调用回调(传递给它的对象中的complete
字段)一次
因此,
\u forEach
循环在保存中对每个项目调用一次异步保存
,这意味着在保存中对每个项目启动一次保存操作。由于done
是asyncSave
的回调,因此最终将调用done
,每次保存操作调用一次。由于done
是使用.after
创建的,并且传递给.after的计数等于saves.length
,因此传递给.after
的匿名函数在调用saves.length
次之后才会实际执行。换句话说,在示例中启动的所有保存操作完成之前,不会调用它。感谢您的详细解释。您的示例比lodash API文档的示例更易于理解。
var saves = ['profile', 'settings'];
var done = _.after(saves.length, function() {
console.log('Done saving!');
});
_.forEach(saves, function(type) {
asyncSave({ 'type': type, 'complete': done });
});
// → logs 'Done saving!', after all saves have completed
var _ = require("lodash");
var fp = _.after(3, function () { console.log("OMG!"); });
fp(); // Nothing
fp(); // Nothing
fp(); // Prints "OMG!"