我正在从Angular的文档中查看此示例,$q但是我认为这可能总体上适用于Promise。下面的示例是从文档中逐字复制的,并附有评论:
$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”的含义是什么?
.then()
promiseB
Object
Number
我应该以这种方式访问promiseB.value吗?成功回调如何返回承诺并返回“结果+ 1”?我想念一些东西。
promiseB.value
promiseA的then函式会传回新的promise(promiseB),promiseA该函式在解析后会立即解析,其值就是内从Success函数传回的值promiseA。
promiseA
then
在这种情况下promiseA,将使用值- result进行解析promiseB,然后立即使用的值进行解析result + 1。
result
result + 1
访问的值的promiseB方式与访问的结果的方式相同promiseA。
promiseB.then(function(result) { // here you can use the result of promiseB });
编辑2019年12月 :async/ await现在是JS的标准配置,它允许使用上述方法的替代语法。您现在可以编写:
async
await
let result = await functionThatReturnsPromiseA(); result = result + 1;
现在没有了promiseB,因为我们已经使用展开了promiseA的结果await,您可以直接使用它。
但是,await只能在async函数内部使用。因此,要略微缩小,必须像上面这样包含:
async function doSomething() { let result = await functionThatReturnsPromiseA(); return result + 1; }