如果.when相当于 JQuery Promises 的“and”运算符,那么“Or”运算符的等价物是什么?
如果我有两个 Promise,并且我想在两者都解决后做某事,那么我应该使用“when”方法。但是我有一个场景,当一个承诺或另一个承诺已经解决时,我想做一些事情。
场景是数据库初始化。第一个承诺与检查数据库是否已经存在有关。如果第一个承诺被拒绝,第二个承诺来自创建数据库。然后我想运行一些以第一个承诺或第二个承诺为条件的代码。
目前我的代码看起来有点像这样:
function initialiseDB() {
var deferred = jQuery.Deferred();
// Check to see if the database exists already
var existencePromise = checkExistenceOfDatabase();
existencePromise.done(function() {
// The database exists; no need to pull a copy
deferred.resolve();
});
existencePromise.fail( function(error) {
// Failed to confirm existence of database; pull a copy
var pullPromise = pullDatabase();
pullPromise.fail( function(error) {
// Failed to pull database
deferred.reject();
});
pullPromise.done( function() {
// A copy of the database has been pulled
deferred.resolve();
});
});
return deferred.promise();
}
这实际上是一个自定义的“惰性或”运算符。
我是 JQuery 的 Promises 的新手,我花了很长时间寻找一个通用的“或”方法。上面的代码是应该如何完成的,还是我错过了一个通用形式?