gpt4 book ai didi

javascript - then catch 和 then catch 之间的区别

转载 作者:搜寻专家 更新时间:2023-10-31 23:44:16 28 4
gpt4 key购买 nike

这两者有什么区别?一个比另一个快吗?两者似乎都有效。有人请解释

没有 promise 的人:

client.query(query1)

.then(data => {
callback(null, {
statusCode: 200,
body: JSON.stringify(data)
});
.catch(err => {
callback(null, {
statusCode: 500,
body: JSON.stringify(err)
});
});

其他有 promise 的:

return new Promise((resolve, reject) => {

client.query(query2)

.then(data => {
resolve({statusCode:200, body: JSON.stringify(data)});
})
.catch(err => {
reject(err);
});

});

最佳答案

让我们从这两个代码片段的共同点开始。他们都调用了一些我们一无所知的 client.query() 函数,但是我们可以猜测它返回一个 Promise。实例。我将在其余答案中假设这一点。

What is the difference between these two?

两者之间的区别在于它们如何从异步操作返回结果。第一个使用回调,而后者使用 Promise,这不仅仅是一个回调。它提供状态(待定/已完成/已拒绝)并支持 chaining .当然,您也可以链式回调,但它不可避免地会以 callback hell 结束。 .在第二个片段中,您可以返回原始 promise ,但在我看来,将其包装在您自己的 promise 中可能是一件好事,因为您正在抽象出返回原始 promise 的结果。

Is one faster than the other?

我不会担心这件事。在异步编程中,通常是等待最耗时的异步操作的结果。从性能的 Angular 来看,您如何向调用者报告此类操作结果的机制是无关紧要的。然而,在异步编程中重要的是代码的可读性和可维护性,即使您使用 promises,这也可能不是最佳的。这导致我们async functions在 ES2017 中引入。

我不鼓励您立即使用异步函数。只需注意它、研究它并在适当的时候使用它。

关于javascript - then catch 和 then catch 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56514651/

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