我正在查看Angular文档中关于$q的示例,但我认为这可能适用于一般的promise。下面的示例是从他们的文档中直接复制的,包括他们的注释:
promiseB = promiseA.then(function(result) {
return result + 1;
});
// 当promiseA被解决后,promiseB将立即被解决,并且它的值将是promiseA的结果加1
我不清楚这是如何工作的。如果我可以在第一个.then()的结果上调用.then(),将它们链接在一起,我知道我可以这样做,那么promiseB是一个promise对象,类型为Object。它不是一个Number。那么他们所说的“它的值将是promiseA的结果加1”是什么意思?
我应该像promiseB.value这样访问它吗?成功回调如何返回一个promise并返回“result + 1”?我漏掉了什么。
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
当一个promise被解决/拒绝时,它会调用它的成功/错误处理程序:
var promiseB = promiseA.then(function(result) { // 用result做一些事情 });then方法也返回一个promise:promiseB,它将根据promiseA的成功/错误处理程序的返回值来解决/拒绝。promiseA的成功/错误处理程序可以返回三个可能的值,这些值将影响promiseB的结果:
有了这个理解,你可以理解下面的内容:
promiseB = promiseA.then(function(result) { return result + 1; });then调用立即返回promiseB。
当promiseA被解决时,它将结果传递给promiseA的成功处理程序。
由于返回值是promiseA的结果+1,成功处理程序返回一个值(上面的选项2),因此promiseB将立即解决,并且promiseB的成功处理程序将被传递promiseA的结果+1。