如何在Node JS中编写非阻塞if语句?

use*_*947 2 javascript nonblocking blocking node.js

我在php中有一个if语句:

if ( $isTrue && db_record_exists($id)) { ... } 
else { ... };
Run Code Online (Sandbox Code Playgroud)

第一个条件是真/假布尔检查.

第二个条件调用一个函数来查看数据库表中是否存在行并返回true或false.

我想在Node JS中重写这个条件,以便它是非阻塞的.

我已经重写了db_record_exists,如下所示......

function db_record_exists(id, callback) {
  db.do( "SELECT 1", function(result) { 
    if (result) { callback(true); }
    else { callback(false); }
  );
}
Run Code Online (Sandbox Code Playgroud)

...但我无法看到如何将其合并到一个更大的if语句中,并使用布尔检查.例如,以下语句没有意义:

if (isTrue and db_record_exists(id, callback)) {
...
}
Run Code Online (Sandbox Code Playgroud)

写"节点"的方式是什么?

任何建议将不胜感激.

在此先感谢您的帮助.

jos*_*736 6

首先检查变量,然后检查回调内异步调用的结果.

if (isTrue) db_record_exists(id, function(r) {
    if (r) {
        // does exist
    } else nope();
});
else nope();

function nope() {
    // does not exist
}
Run Code Online (Sandbox Code Playgroud)