为了账号安全,请及时绑定邮箱和手机立即绑定

如何获取承诺的价值?

如何获取承诺的价值?

jeck猫 2019-08-19 10:19:57
如何获取承诺的价值?我正在从Angular的文档中看到这个例子,$q但我认为这可能适用于一般的承诺。他们有这个例子,逐字复制他们的评论包括:promiseB = promiseA.then(function(result) {  return result + 1;});// promiseB will be resolved immediately after promiseA is resolved and its value// will be the result of promiseA incremented by 1我不清楚这是如何工作的。如果我可以调用.then()第一个的结果.then(),链接它们,我知道我可以,那么promiseB是一个类型的promise对象Object。它不是Number。那么他们的意思是“它的价值将是promiseA增加1的结果”?我应该promiseB.value像那样访问它吗?成功回调如何返回一个承诺并返回“结果+ 1”?我错过了什么。
查看完整描述

3 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

promiseAthen函数返回一个新的承诺(promiseB)被立即解决后promiseA解决了,它的价值是什么,从内成功函数返回的值promiseA

在这种情况下promiseA,使用值result解析- 然后立即promiseB使用值解析result + 1

访问值的promiseB方式与访问结果的方式相同promiseA

promiseB.then(function(result) {
    // here you can use the result of promiseB});


查看完整回答
反对 回复 2019-08-19
?
HUWWW

TA贡献1874条经验 获得超12个赞

当一个promise被解决/拒绝时,它会调用它的成功/错误处理程序:

var promiseB = promiseA.then(function(result) {
   // do something with result});

then方法还返回一个promise:promiseB,它将根据来自promiseA的成功/错误处理程序的返回值进行解析/拒绝。

promiseA的成功/错误处理程序可以返回三个可能的值,这将影响promiseB的结果:

1. Return nothing --> PromiseB is resolved immediately, 
   and undefined is passed to the success handler of promiseB2. Return a value --> PromiseB is resolved immediately,
   and the value is passed to the success handler of promiseB3. Return a promise --> When resolved, promiseB will be resolved. 
   When rejected, promiseB will be rejected. The value passed to
   the promiseB's then handler will be the result of the promise

有了这种理解,您可以理解以下内容:

promiseB = promiseA.then(function(result) {
  return result + 1;});

then调用立即返回promiseB。当promiseA解决后,它会将结果传递给promiseA的成功处理程序。由于返回值是promiseA的结果+ 1,因此成功处理程序返回一个值(上面的选项2),因此promiseB将立即解析,并且promiseB的成功处理程序将传递promiseA的结果+ 1。


查看完整回答
反对 回复 2019-08-19
?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

.thenpromiseB的函数接收.thenpromiseA函数返回的内容。

这里promiseA返回的是一个数字,它将作为numberpromiseB成功函数中的参数提供。然后将增加1


查看完整回答
反对 回复 2019-08-19
  • 3 回答
  • 0 关注
  • 545 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信