最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

then()函数是否返回反映先前承诺结果的承诺?

IT培训 admin 4浏览 0评论

then()函数是否返回反映先前承诺结果的承诺?

我是新的承诺,并研究过它。所以我的代码和我的理解:

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时(如果connect成功)。 then接受回调,即“successCB”,“failureCB”作为参数,实际上代表connect承诺返回的结果或错误。正确?

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

then再次呼吁then返回的先前承诺。

如果在then上使用connect(),为什么then接受回调?由于connect已经返回结果即“successCB”,它如何知道connect的成功?

回答如下:

如果你是对的,我不是百分之百确定,但这就是我解释它的方式。让我们说我们有一个承诺A.

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

就个人而言,我发现学习这一点非常困惑,因为它需要一个非常复杂的心智模型来完全掌握这一点。我完全理解这一天是我写自己的Promise课程的那一天。我会建议任何完全想要掌握每个细节承诺的人花时间来做这件事。

then()函数是否返回反映先前承诺结果的承诺?

我是新的承诺,并研究过它。所以我的代码和我的理解:

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时(如果connect成功)。 then接受回调,即“successCB”,“failureCB”作为参数,实际上代表connect承诺返回的结果或错误。正确?

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

then再次呼吁then返回的先前承诺。

如果在then上使用connect(),为什么then接受回调?由于connect已经返回结果即“successCB”,它如何知道connect的成功?

回答如下:

如果你是对的,我不是百分之百确定,但这就是我解释它的方式。让我们说我们有一个承诺A.

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

就个人而言,我发现学习这一点非常困惑,因为它需要一个非常复杂的心智模型来完全掌握这一点。我完全理解这一天是我写自己的Promise课程的那一天。我会建议任何完全想要掌握每个细节承诺的人花时间来做这件事。

发布评论

评论列表 (0)

  1. 暂无评论