我最近开始使用nodejs。我想遵循它的 async 性质并编写一些辅助函数,它们将一个函数作为参数,并且仅在满足某些条件时才调用该函数,例如:
function areMandatoryFieldsFilledOut( fields, httpRequest, httpResponse, callback ) {
/* some logic */
if( mandatory_fields_have_been_filled_out ) {
callback();
} else {
httpResponse.send('Mandatory fields have not been filled out!');
}
}
// usage
areMandatoryFieldsFilledOut(['username', 'password'], req, res, function () {
// this is executed only if both username and password values are supplied
}
编写此类函数的最佳方法是什么?是否有一个特殊的单词用于函数名称的开头,例如'ensure',例如“ensureAuthenticated( callback )
?
有没有办法让读者相信我的代码只有在通过函数声明(name和args)满足条件时才会调用回调?
答案 0 :(得分:0)
此内容的现有术语包括connect
的{{1}} / express
名称或middleware
的{{1}}名称。我使用快速中间件,它具有非常相似的模式,但加上有序的Ruby on Rails
函数,在这种情况下,我将这些函数命名为没有任何特定的约定,除了试图清楚他们做什么,检查或要求
before_filter
如果我想明确指出这是stack
或app.post('/submit', signedIn, authorized, formIsValid, function (req, res) { /*...code to process form.../*});
等中间件,有时我会将MW
添加到最后。
答案 1 :(得分:0)
我认为你看错了。这不是需要澄清的函数名,而是callback
参数。我会改用以下函数签名:
checkMandatoryFieldsFilledOut(
fields,
httpRequest,
httpResponse,
filled_out_callback
)
或者,如果该参数名称感觉太长,我会使用ok_callback
。如果有必要,我还会给他们一个可选的fail_callback
,以防调用者在条件失败时需要进行一些处理:
checkMandatoryFieldsFilledOut(
fields,
httpRequest,
httpResponse,
ok_callback,
fail_callback /* optional */
)