gpt4 book ai didi

javascript - promise 链和匿名 promise 返回

转载 作者:行者123 更新时间:2023-12-03 04:44:50 24 4
gpt4 key购买 nike

这里我有一系列运行良好的 promise 。所有 *.destroy 都是返回 promise 的 promise :

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_* 为空则不存在)。

如果它存在,我想销毁它然后返回(这些都是返回 promise )。

如果它不存在,我想返回一个匿名 promise ,该 promise 不会返回任何内容,因为所有 promise 都没有我关心的任何数据。

在示例中,我添加了一些示例代码来执行 if 语句,我想知道我将在 null 实例中放入什么来传递 promise (解析)值。

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。如果是这种情况,如果您想转到 catch,则只需调用 Promise.resolve(OptionalValue)Promise.reject(OptionalValue) > 处理程序:

function callDBDestroy() {
var db;

DB_Categories.destroy()
.then(function () {
if( DB_Equipment != null) {
return DB_Equipment.destroy();
} else {
return Promise.resolve();
}
}).then(function () {
return DB_Certificates.destroy();
}).then(function () {
return DB_Locations.destroy();
}).catch(function (err) {
showMsg("Error in callDBDestroy: " + err);
});
}

关于javascript - promise 链和匿名 promise 返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42915331/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com