我正在从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”?我想念一些东西。
promiseA
的then
函式会传回新的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] 删除。
我来说两句