gpt4 book ai didi

javascript - 链接一个 promise

转载 作者:行者123 更新时间:2023-11-28 18:16:59 26 4
gpt4 key购买 nike

我检查表中是否存在帖子。如果没有,我将其插入。所以我需要进行两个异步调用。我可以用 promise 来完成这个公寓吗?

var insertOrUpdateBuilding = (callback)=>{
// Check if building exists
db('buildings')
.where({externalId: buildingId})
.then(function(rows){
// Building exist, do nothing
if(rows){
callback ();
}
// Building does not exist. Insert it
if(!rows){
return db('buildings').insert({externalId: buildingId, name: req.body.name})
}
})
.then(function(promise){

})
.catch(function(err){
callback({message: 'Error looking up building', err: err})
})
};

我被困住了。我该如何继续?

最佳答案

Promise 是有粘性的,一旦你开始使用它们,每个涉及的函数都必须接受并返回 Promise。在您的示例中,如果 promise db() ,则 insertOrUpdateBuilding 也应该返回一个 promise ,即 db(...) 与一些然后附加到它

var insertOrUpdateBuilding = () => db('buildings')
.where({externalId: buildingId})
.then(rows => rows ||
db('buildings').insert({externalId: buildingId, name: req.body.name}))
;

并且无论谁调用 insertOrUpdateBuilding 都应该得到 promise :

  insertOrUpdateBuilding().then(okay).catch(error!)

请注意,在较低级别的函数中捕获错误通常没有意义(日志记录/调试目的除外)。让错误传播到上层,您可以在其中以合理的方式处理它,例如通知用户。

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

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