Javascript异步顺序

Javascript异步顺序,javascript,node.js,asynchronous,Javascript,Node.js,Asynchronous,我的问题是特定于Javascript和异步操作的。我正在构建一个Node.js API,用于与数据库(OrientDB)交互,并使用一个Node orient包提供基本的连接功能。其中一些函数如下所示: db.delete("...") db.insert("...") etc. db.delete("..."); db.delete("..."); db.insert("..."); 它们中的每一个都返回一个承诺,可用于对结果采取行动: db.insert("...").then(func

我的问题是特定于Javascript和异步操作的。我正在构建一个Node.js API,用于与数据库(OrientDB)交互,并使用一个Node orient包提供基本的连接功能。其中一些函数如下所示:

db.delete("...")
db.insert("...")
etc.
db.delete("...");
db.delete("...");
db.insert("...");
它们中的每一个都返回一个承诺,可用于对结果采取行动:

db.insert("...").then(function(records) {
    res.send(records);
});
我的目标是执行两条delete语句(顺序无关紧要),然后执行一条insert语句(必须在delete语句之后执行,否则我将最终删除插入的记录)。我能否简单地写下以下内容:

db.delete("...")
db.insert("...")
etc.
db.delete("...");
db.delete("...");
db.insert("...");
换句话说,像Javascript这样的单线程环境中的异步操作的顺序是否得到了维护??? 或者我需要做出某种承诺:

var promise = new Promise(function(resolve, reject) {

    db.delete("thing to delete").then(handleFinish, reject);
    db.delete("other thing to delete").then(handleFinish, reject);

    var finished = false;

    function handleFinish() {
        if(finished){
            resolve();
        }
        else {
            finished = true;
        }
    }
});
然后

promise.then(function(){
    db.insert("...");
});

还是有更好的替代方案来实现这一点?我不熟悉Node,也不熟悉异步编程。

这可以通过Promissions实现,Promissions有很多模块。这里有一个例子


在处理回调时,可以使用控制流模块,如

,这主要取决于所使用的
db
实现。异步只意味着它们在JS继续执行时做后台工作,而不是打乱序列。