如何获得承诺的价值?

临时用户名:

我正在从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就是一个诺言对象,其类型为Object这不是一个Number那么,它们的含义是“其值将是promiseA的结果加1”?

我应该以这种方式访问promiseB.value吗?成功回调如何返回承诺并返回“结果+ 1”?我想念一些东西。

Nachshon Schwartz:

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只能在async函数内部使用因此,要略微缩小,必须包含以上内容:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章