【发布时间】:2015-05-08 23:38:14
【问题描述】:
我需要创建一个将传递给我的数据库服务器的函数。返回的函数会将单个项目作为参数并将该项目与需求列表进行比较。
为此,我需要一个函数生成函数,它接受一个数组作为参数,并返回内置该数组的内部函数。
这是一个例子:
function create_query (list_of_requirements) {
return function (item) {
var is_match = true
// the next function sets is_match to false if the item fails
list_of_requirements.forEach(check_if_item_meets_requirement)
return is_match
}
}
一个使用这个的例子:
function search (parsed_user_string) {
db.get(create_query(parsed_user_string)).then(function(results){
show_results(results)
})
}
如何将需求列表构建到内部函数中?
【问题讨论】:
-
看起来您已经在这样做了。你遇到了什么问题?
-
我看到了两个问题:你永远不会调用
create_query()返回的函数。其次,我假设db.get()期望它的参数是一个查询字符串,但你的函数只返回一个布尔值。 -
check_if_item_meets_requirements也需要在内部函数的范围内,以便它可以分配给is_match。 -
如果
db.get的参数应该是一个回调,那么看起来你调用它是正确的。 -
db.get 需要将函数作为参数,并返回一个承诺。我在下面的回答使用闭包解决了这些问题。