【发布时间】:2015-09-17 10:59:06
【问题描述】:
我在 Node.js 上有一个应用程序,由两个文件组成。第一个文件包含构造函数if(..) { ... } else { ... },第二个文件包含导致if() 中的参数的函数,并包含对数据库的请求。示例:
File_1(部分)
var args = require('./File_2');
if(args.test() && args.example()) {
//action
}
else {
//action
}
File_2(部分)
function test() {
mysql.query('SELECT * FROM `table` WHERE `name` = "test"', function(err, rows) {
if(rows.length == 0) {
return false;
}
else {
return true;
}
}
}
function example() {
mysql.query('SELECT * FROM `table` WHERE `name` = "example"', function(err, rows) {
if(rows.length == 0) {
return false;
}
else {
return true;
}
}
}
exports.test = test;
exports.example = example;
请求会在一段时间后出现,因此在 if() 参数中等于 undefined, undefined。如何使if/else构造等待请求结果?我有两个想法 - 承诺和模块async。我认为async - 错误的决定。在这种情况下如何使用承诺?哪种解决方案更可取?我会很高兴得到任何答案。
(抱歉英语不好。)
【问题讨论】:
-
你不能做
if (someAsyncCall())。不可能调用异步函数并使其表现得像同步函数一样。
标签: javascript database node.js