gpt4 book ai didi

javascript - Promise.reject() 与返回 promise.reject()

转载 作者:行者123 更新时间:2023-11-30 14:20:32 25 4
gpt4 key购买 nike

我一直在努力理解下面两个的区别,哪个是空闲的使用方式:

let getClient = () => {
return connect()
.then((client) => {
return Promise.resolve(client);
})
.catch((err) => {
return Promise.reject(err);
}
}

let getClient = () => {
return connect()
.then((client) => {
Promise.resolve(client);
})
.catch((err) => {
Promise.reject(err);
}
}

let getClient = () => {
return new Promise((resolve, reject) => {
return connect()
.then((client) => {
resolve(client);
})
.catch((err) => {
reject(err);
})
})
}

谁能帮我理解其中的区别? return Promise.resove/reject 与仅使用 Promise.resolve/reject 有区别吗?

最佳答案

他们都是不好的例子。

connect() 可以then,所以它可能会返回一个 promise 。创建额外的 promise ,除了返回另一个 promise 的结果之外什么都不做,这会使事情变得过于复杂。

您可以将整个内容重写为:

let getClient = connect;

... 并获得或多或少相同的东西(除非您随后打算去应用一些奇怪的边缘情况)。


您的第一个示例获取解析连接 promise 的结果,创建一个新的 promise 并立即使用相同的值解析它,然后返回连接 promise 采用的 promise 。

你的第二个例子做了同样的事情,除了没有采用,所以原始连接 promise 结果在链中的下一个 then 中可用。 (这些结果与前面示例中通过额外 promise 的结果相同)。

您的第三个示例在对 connect 的调用之外创建了一个新的 promise ,然后使用来自 connect 的值解析它。这是另一个毫无意义的额外 promise 。

关于javascript - Promise.reject() 与返回 promise.reject(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52820990/

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