Javascript异步顺序
我的问题是特定于Javascript和异步操作的。我正在构建一个Node.js API,用于与数据库(OrientDB)交互,并使用一个Node orient包提供基本的连接功能。其中一些函数如下所示: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
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继续执行时做后台工作,而不是打乱序列。