Здесь у меня есть цепочка обещаний, которая отлично работает. Все * .destroy - это обещания, которые возвращают обещания:
function callDBDestroy() {
var db;
DB_Categories.destroy().then(function () {
return DB_Equipment.destroy();
}).catch(function (err) {
showMsg("Error in callDBDestroy: " + err);
}).then(function () {
return DB_Certificates.destroy();
}).catch(function (err) {
showMsg("Error in callDBDestroy: " + err);
}).then(function () {
return DB_Locations.destroy();
}).catch(function (err) {
showMsg("Error in callDBDestroy: " + err);
});
}
Но я хочу добавить оператор if в каждый из них, чтобы проверить, существует ли база данных PouchDB (чего нет, если DB_ * имеет значение null).
Если он существует, я хочу уничтожить его, а затем вернуть (и все они возвращают обещания).
Если его не существует, я хочу вернуть анонимное обещание, которое ничего не возвращает, поскольку ни одно из обещаний не имеет данных, которые меня интересуют.
В этом примере я добавил некоторый образец кода для выполнения оператора if, и мне было интересно, что бы я поместил в нулевой экземпляр, который передал бы значение обещания (разрешения).
function callDBDestroy() {
var db;
DB_Categories.destroy().then(function () {
if( DB_Equipment != null) {
return DB_Equipment.destroy();
}
else {
Anonymous empty promise - something like:
new Promise().resolve();
}
}).then(function () {
return DB_Certificates.destroy();
}).then(function () {
return DB_Locations.destroy();
}).catch(function (err) {
showMsg("Error in callDBDestroy: " + err);
});
}
Спасибо,
Том
Promise.resolve()
, вам не нужныnew
вещи - person Rob M.   schedule 21.03.2017