gpt4 book ai didi

javascript - 在 Angularjs 中链接多个 promise

转载 作者:搜寻专家 更新时间:2023-11-01 05:00:22 24 4
gpt4 key购买 nike

我有以下结构,需要简化它,

Resuable service1 与 IndexedDB 交互

function isDbExist (){
// do something , it return either reject or resolve
}

function createDB (){
// do something , it return either reject or resolve
}

function getData (){
// do something , it return either reject or resolve
}

在另一个服务 2 中,我正在注入(inject)这个服务 1 并使用这些功能

function1 (){
service1.isDbExist.then(function(data){
service1.createDB.then(function(data){
service1.getData.then(function(data){
referred.resolve(data);
},function(error){
deferred.reject(error)
})
},function(error){
deferred.reject(error);
})
},function(error){
deferred.reject(error);
})
}

这里的问题是代码的可读性不好,哪个promise对应哪个reject函数,不好调试。他们这样做有什么好方法吗?我已经阅读了有关 $q.all 的内容,但这不适用于这种情况。

最佳答案

确切地说, promise 的美妙之处在于您可以将它们链接起来,而不是像回调那样嵌套它们。你可以像这样处理前一个 promise 时返回另一个 promise :

isDbExists().then(function(db) {
// do something
return createDb();
}).then(function(db) {
// do something with with the resolved db..
return getData();
}).then(function(data) {
// Do something with data
}).catch(function(error) {
// Uh oh, something went wrong. Deal with error
});

最后,您处理可能发生的错误。

关于javascript - 在 Angularjs 中链接多个 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31366323/

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