promise对象的方法的参数then()的回调函数

时间:2016-03-29 12:46:19

标签: angularjs angular-promise

我是棱角分明的新手,我做了一些研究,但仍然找不到答案..., 我有以下代码:

promiseB = promiseA.then(function(result) {
  return result + 1;
});

为什么我们可以使用result作为回调函数的参数? promiseA返回的内容如何变为result

谢谢大家!

3 个答案:

答案 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