gpt4 book ai didi

javascript - Javascript Promises - If 语句返回最佳实践

转载 作者:行者123 更新时间:2023-12-03 01:34:29 24 4
gpt4 key购买 nike

我正在编写一个 node.js 函数,它根据条件返回不同的 promise ,即 cod:

if(condition){
return promise.then(() => {
return Promise.resolve(value)
})
}else{
return anotherPromise
}

现在的问题是,如果条件为真,我需要在 promise 完成后做一些事情,但在其他情况下我只是返回 promise ,所以 eslint 告诉我这是一个嵌套 promise 的不好做法。所以这段代码对我不起作用:

(() => {
if(condition){
return promise
}
}else{
return anotherPromise
}
}).then(() => {
return Promise.resolve(value)
})

因为使用此代码,then 回调将在两种情况下执行。

What is the best practice to handle this case?

最佳答案

如果您使用经典(ES6/ES2015+)Promise 语法,您必须链接 Promise(这没什么不好!)。

但是您还可以选择将代码拆分为函数以获得可读性和 avoid nesting issues :

const firstCase = () => ... // returning a promise
const secondCase = () => ... // returning a promise

if (condition) {
return firstCase()
} else {
return secondCase()
}

但是对于 ES7/ES2016+,您可以使用 async/await语法:

// in a "async" function
async function main() {
if (condition) {
await promise // if you need the promise result, you can assign it
return value // the result of an async function is always a Promise.
} else {
return anotherPromise
}
}

或混合两种解决方案。

关于javascript - Javascript Promises - If 语句返回最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51134776/

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