希望你很好。
我需要你的帮助才能理解如何在Node JS中逻辑组织程序,以避免在给定异步属性的情况下重复代码(作为初学者......)。让我们举一个例子,让它更容易解释。 一个人在mongo数据库中有一些数据(让我们说一个名字列表)。这个名称列表可以通过readData函数访问,如下所示
function readData(criteriaRead,callback) {
mongodb.stuff(..)
callback('data read on mongodb')
}
我的程序中有两个动作:一个是打印出名称列表,另一个是检查名称是否在列表中。 对于第一种情况,它很简单,我只需要有这样的功能
function printout(data) {console.log(data)}
并且要做到这一点
readData(criteriaRead,printout)
在第二种情况下,让我们说我有这样的功能
checkIfInIt(array,dataToCheck) {//stuff to check console.log(results)}
现在,我有一个问题,因为如果我做readData(criteriaRead,checkIfInIt)
它就不会工作,因为checkIfInIt需要两个参数。
我需要一个像这样的函数
function readDataBis(criteriaRead,dataToCheck,callback) {
mongodb.stuff(..)
callback('data read on Mongodb','dataToCheck')
}
然后readDataBis(criteriaRead,dataToCheck,checkIfInIt)
会起作用,但我的代码中有很多重复。
如何避免?
答案 0 :(得分:0)
针对此类问题有几种解决方案,但这对您的案例来说很简单
使用三个参数声明你的函数
function readData(callback, criteriaRead, dataToCheck) { ...
在内部,检查dataToCheck
是否为undefined
,并继续执行您所拥有的第二个功能的流程(如果是这样的话)。 (否则只需执行读取功能)
像这样打电话给他们
readData(callback, criteriaRead); // Third parameter missing, will be undefined
readData(callback, criteriaRead, dataToCheck);
你也可以传递一个像这样的参数的对象,如果它会使它更简单
function readData(callback, params) { ...
并像这样打电话
readData(callback, { criteriaRead: criteriaRead, dataToCheck: dataToCheck });