gpt4 book ai didi

javascript - 如何有条件地设置解构

转载 作者:行者123 更新时间:2023-11-28 04:33:06 24 4
gpt4 key购买 nike

我不确定为这篇文章命名的最佳方式,请随意根据需要重新命名。

我有一个方法,如果它决定退出,我让它返回 null。否则它将返回一个 promise 。

在接收方,我如何管理这两种情况?例如,我试图找出如何捕获它保释的情况(我从调用 deletePRBucket 中得到 null:

来电者 - 我的测试

it('can create a new S3 branch', async () => {
const options = { branch: '11' }
// first lets check if we delete it if it already exists before trying to re-create it
let { error, stdout, stderr } = await Deploy.deletePRBucket(options.branch)

({ error, stdout, stderr } = await Deploy.createPRBucket(options)),
result = JSON.parse(stdout)

expect(result.Location).to.equal(`http://oursite-${options.branch}.s3.amazonaws.com/`)
})

所以我在这里收到一个错误,值 errorstdoutstderr 不存在,因为我的删除方法返回 null如果它不尝试删除(因为存储桶不存在)。所以不确定如何处理决定保释并返回 null 而不是返回 promise 的情况。

更新(还包括bucketExists实现):

实现

export async function bucketExists(bucketName){
console.log(`attempting to find bucket oursite-${bucketName}`)
let exists = null
try {
let { error, stdout, stderr } = await exec(`aws s3api head-bucket --bucket oursite-${bucketName}`)
exists = stdout === ""
}
catch(err){
exists = false
}

return exists
}

export async function deletePRBucket(branch){
const bucketExists = await this.bucketExists(branch)
if(!bucketExists) {
return new Promise((resolve) => {
resolve({ error, stdout, stderr })
})
}

return exec(`aws s3 rb s3://oursite-${branch} --force`)
}

我的意思是我想我可以返回一个对象 { error, stdout, stderr } 并检查 stdout 是否为 null 或类似的东西,也许返回一个 promise ? if(!bucketExists) return new Promise(() => { error, stdout, stderr })

最佳答案

我认为这是错误处理的问题:

export async function deletePRBucket(branch){
const bucketExists = await this.bucketExists(branch)
if(!bucketExists) throw new Error("bucket");

return exec(`aws s3 rb s3://oursite-${branch} --force`)
}

...

try{
let { error, stdout, stderr } = await Deploy.deletePRBucket(options.branch);
}catch(e){
console.log("error");
}

关于javascript - 如何有条件地设置解构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44464183/

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