Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 何时可以使用lodash.after()?_Javascript_Functional Programming_Lodash - Fatal编程技术网

Javascript 何时可以使用lodash.after()?

Javascript 何时可以使用lodash.after()?,javascript,functional-programming,lodash,Javascript,Functional Programming,Lodash,我是函数式编程的新手,有人推荐我去理解主要的高阶函数 浏览lodash API文档时,我无法理解for.after(): 上面的示例代码没有实现asyncSave(),因此我应该自己实现该函数。但我不知道如何实施它。这是因为我不理解\uUafter()本身的规范 如果有人能比API文档所说的更简单地解释这个函数,那就太好了。或者,一个简单易懂且实用的函数示例将是一个很大的帮助。谢谢 。之后将countn和functionf作为参数,并返回一个新函数,我们可以调用该函数(用于“f prime”)。

我是函数式编程的新手,有人推荐我去理解主要的高阶函数

浏览lodash API文档时,我无法理解for
.after()

上面的示例代码没有实现
asyncSave()
,因此我应该自己实现该函数。但我不知道如何实施它。这是因为我不理解
\uUafter()
本身的规范


如果有人能比API文档所说的更简单地解释这个函数,那就太好了。或者,一个简单易懂且实用的函数示例将是一个很大的帮助。谢谢

之后将count
n
和function
f
作为参数,并返回一个新函数,我们可以调用该函数(用于“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!"