gpt4 book ai didi

javascript - then() 函数是否返回反射(reflect)先前 promise 结果的 promise ?

转载 作者:行者123 更新时间:2023-11-30 19:48:33 27 4
gpt4 key购买 nike

刚接触promises,研究过。所以我的代码和我的理解:

sql.connect(config).then(function(connection) {
return connection.request().query('select * from Users')
}).then(function(result) {
console.dir(result);
res.send(result);
}).catch((err) => {
console.log(err);
res.send(err)
});
}) // extra?

在第一行中,connect 方法返回一个 promise,因此当我调用函数 then(如果连接成功 ). then 接受回调,即“successCB”、“failureCB”作为参数,这些参数实际上表示 connect promise 返回的结果或错误。正确吗?

此外,“successCB”正在返回 promise (来自 .query)。

then 再次调用 then 返回的先前 promise 。

then 用于 connect() 的情况下,为什么 then 接受回调以及它如何知道 connect 是否成功,因为 connect 已经返回了结果,即“successCB”?

最佳答案

我不能 100% 确定您是否正确,但这就是我的解释方式。假设我们有一个 promise A

  • 调用 then() 总是 返回一个新的 promise (我们称它为 B)
  • 如果回调返回 promise C,则 promise B 将解决或失败,并返回 promise C 的结果。
  • 如果任何回调返回非 promise 值 X,则 promise B 将解析为值 X
  • 如果在回调中抛出异常,则 promise B 将因异常而失败。
  • 如果主 promise A 失败,并且没有给出失败回调,则 promise B 也会失败并出现相同的错误。

我个人觉得学习这个非常困惑,因为它需要相当复杂的心智模型才能完全掌握。我完全理解这一点的那一天就是我编写自己的 Promise 类的那一天。我会建议任何完全想在每个细节中把握 promise 的人花时间去做这件事。

关于javascript - then() 函数是否返回反射(reflect)先前 promise 结果的 promise ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54715051/

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