将函数求值为节点中的条件函数
Evaluate function as conditional in Node
我有一个函数isValidCode(code)
,它的计算结果为true并返回布尔值(我使用typeof()
检查了类型)。
我使用这个函数作为if语句的条件:
if(isValidCode(code)){
console.log('Code is valid!');
}else{
console.log('Code is not valid!');
}
由于某些原因,这不起作用,即使函数的计算结果为true,else语句也会执行。为什么会这样?我使用的是node.js.
isValid函数:
exports.isValidCode = pool.pooled(function(client, Code){
var valid;
client.query('SELECT EXISTS(SELECT * FROM codes where code = $1)', [Code], function(err,result){
if (err) console.log('isValidCode error: ' + err);
console.log('isValidCode?: ' + result.rows[0].exists);
valid=result.rows[0].exists;
console.log(typeof(result.rows[0].exists));
});
return valid;
});
传递给client.query
的函数是一个回调。一旦查询返回,它将被异步调用。但是isValidCode
不会在返回之前等待回调。它将调用client.query
并继续执行下一行,即返回语句。函数将在valid
的值设置为任何值之前返回。
您可以将此函数重写为回调或事件。这是回调版本
isValidCode(code, function(result){
if(result){
// do stuff if result is true
} else {
// otherwise, do other stuff
}
});
相关文章:
- 如何做到这一点,使代码在不传递条件后执行函数
- 在函数中添加多个条件
- 如何在页面加载时设置函数的条件
- AngularJS:如何使用java脚本函数更改跨度的ng-show条件
- 具有多个条件的Javascript.split()函数
- 有条件地运行javascript函数-Razor,HTML
- 如何使用图表包装函数有条件地格式化谷歌可视化表单元格
- Google Sheets自定义函数条件格式
- 多次调用promise函数,直到另一个promise函数满足条件
- 在条件内部调用JQuery函数
- 双条件jQuery函数事件
- 根据条件将函数放入数组中(如果选中复选框)
- 当链接javascript承诺时,如何处理then()函数中的条件
- 如何使用jQuery绕过具有指定类和两个条件的元素的函数
- 如果函数PHP中的条件为true,则禁用链接
- 将JavaScript函数分配给提交按钮,该按钮应有条件执行
- JQuery:阻止一个函数运行,直到满足另一个函数条件“X”时间
- AngularJS服务的正确方式如何编写函数条件
- 如何添加排序函数条件,将所有空白项排序到列表的末尾?
- 在click函数条件语句中调用时,函数值未定义