我是棱角分明的新手,我做了一些研究,但仍然找不到答案..., 我有以下代码:
promiseB = promiseA.then(function(result) {
return result + 1;
});
为什么我们可以使用result
作为回调函数的参数? promiseA
返回的内容如何变为result
?
谢谢大家!
答案 0 :(得分:1)
承诺只是用于表示待处理活动的对象,不要将其与该活动的结果混淆。
已解析的值将传递给为.then()
方法指定的成功回调。如果promises被链接在一起,那么从该回调返回的值将成为传递给下一个.then()
的值(或者如果返回的值也是一个promise,则该promise的解析将传递给下一个.then()
)
因此,在您的特定示例中,我们不知道result
来自何处:创建promiseA
的任何内容只是确保它使用该值解析。但是,我们知道promiseB
将使用值result+1
解析,因为这是您返回的内容。
答案 1 :(得分:1)
当promiseA
完成(“解析”)时,它将调用您传递给then()
函数的函数,并将结果传递给该函数。所以,假设我有一个从数据库查询请求信息的承诺。让我们说它会(最终)给我一个用户的电话号码。我将我的代码设置为打印出来,如下所示:
myPromise.then(function(phoneNum) {
console.log(phoneNum);
});
我们不能只说var result = myPromise()
的原因是因为promise在与其余代码不同的流中执行。我们需要设置一个函数来处理完成后的结果
答案 2 :(得分:0)
检查使用$ q服务如何defer
返回承诺并处理sucesives回调,defer.promise
它是关键。
var promiseB = myService.response().then(function(result){
var defer = $q.defer();
defer.resolve(result);
return defer.promise;
});
promiseB.then(function(result){
console.log("In promise B ===>", result);
});
检查此codepen:http://codepen.io/gpincheiraa/pen/ONjMrR?editors=0010