当前位置: 首页 > 面试题库 >

如何获得承诺的价值?

闻人嘉悦
2023-03-14
问题内容

我正在从Angular的文档中查看此示例,$q但是我认为这可能总体上适用于Promise。下面的示例是从文档中逐字复制的,并附有评论:

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”?我想念一些东西。


问题答案:

promiseAthen函式会传回新的promise(promiseB),promiseA该函式在解析后会立即解析,其值就是内从Success函数传回的值promiseA

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

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

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

编辑2019年12月async/ await现在是JS的标准配置,它允许使用上述方法的替代语法。您现在可以编写:

let result = await functionThatReturnsPromiseA();
result = result + 1;

现在没有了promiseB,因为我们已经使用展开了promiseA的结果await,您可以直接使用它。

但是,await只能在asynchtml" target="_blank">函数内部使用。因此,要略微缩小,必须像上面这样包含:

async function doSomething() {
    let result = await functionThatReturnsPromiseA();
    return result + 1;
}


 类似资料:
  • 问题内容: 我保证会绑定到我的UI中。当承诺解决并且UI元素呈现后,我可以单击该UI元素。在我处理点击的控制器代码中,我要根据诺言的价值行事。至此,在我的角度代码中,我已经知道诺言已经解决了..但是当我想要获得价值时,它仍然是诺言。 鉴于我知道必须兑现承诺,获得承诺价值的最佳方法是什么? 问题答案: 承诺永远是诺言- 那就应该如此。尽管可以将诺言直接绑定到视图,但我通常不鼓励这种做法,因为它缺乏透

  • 问题内容: 我编写了以下node.js文件: 如您所见,我为了等待读取csv文件的两种操作而使用。我不明白为什么,但是当我运行代码时,该行未提交。 我的第二个问题是我希望的回调函数接受两个不同的变量,而每个变量都是相关promise的结果。 问题答案: 第一个问题 兑现承诺 更改: 到(添加参数) 第二个问题 在与结果为每个传递给它的承诺数组缓解。 这意味着您可以将结果提取到如下变量中: 您可以使

  • 问题内容: 我试图弄清楚如何通过可能与“ co” 一起获得承诺的价值: 调用的函数不是生成器,而是普通函数。有了上面的,但是我想要解析的值。是否合作或其他一些库有这样做的方法吗? 问题答案: 是的, 公司 可以做到。您必须在调用中包装父函数: 内在将成为解决价值。如果承诺被拒绝,则可以通过基本声明来纠正错误。

  • 问题内容: 以下是用于从共享点检索信息的控制器。我可以看到调试显示条目具有需要在视图中呈现的属性值。我如何从结果承诺中获得那个价值? 我试图将其放入柜台,但没有显示。任何帮助,将不胜感激。 问题答案: 不要使用jQuery ,而要使用$ http服务: 然后从返回的promise中提取数据: $ http服务返回的promise已与AngularJS框架集成。只有在AngularJS执行上下文中应

  • 问题内容: 当我调试此代码时,在databaseUser中dataSnapshot在数据库中具有User的值,但是在object中,未添加,则全部为null。而且我不明白,因为在对象事件中正常接收值。 我的数据库用户,目前仅用于测试: 和方法,只是选择另一个活动的事件的关键: 问题答案: 当您对Firebase数据库执行查询时,可能会有多个结果。通过附加a,您可以在一个快照中获得这些结果,因此快照

  • 问题内容: 我正在使用php中的分页进行搜索功能,下面是我的代码,但是每当我单击下一个链接时,搜索查询都不会采用通过POST传递的变量。你能帮我么.. 问题答案: 您的代码中有几个问题。 第一的: 您使用的变量不正确。您有,但您应该使用与变量相同的方式,如下所示: 第二: 您正在解释“发布”的概念,并错误地单击了链接。您需要使用下一个和上一个按钮进行的​​操作是一个隐藏的表单,其中包含您需要的所有