Angular如何知道承诺是否得到满足?

时间:2015-04-16 17:34:25

标签: javascript angularjs

我一直在阅读Angular承诺从Web服务获取数据,引起我注意的一件事是Angular由于某种原因知道“请求”是否已经完成或被拒绝,Angular如何知道?它检查响应状态代码吗?你能重新定义这些规则吗?

2 个答案:

答案 0 :(得分:4)

This是对AngularJS中Promise的一个很棒的描述。它帮助我更全面地掌握了幕后发生的事情。

  

我们已经说明了逻辑,父亲要求儿子得到   天气预报,并且儿子不能马上告诉他,而且   父亲在等待时还有其他事可做,儿子做出承诺   他会随着天气回来。当父亲有预测时,他会   要么把船打包,要么留在里面。重要的是要注意   在这里,儿子上山的旅程不应该阻止'阻止'来自的爸爸   做任何事情,所以这就是为什么情况是完美的   创建一个可以解决(履行或拒绝)的承诺   以后。

     

使用Angular的then()函数,我们可以指定爸爸需要的东西   如果每个结果都这样做。 then()函数接受2   作为参数的函数:当promise是要执行的函数   履行,以及承诺被拒绝时执行的功能。

// function somewhere in father-controller.js
var makePromiseWithSon = function() {
// This service's function returns a promise, but we'll deal with that shortly
SonService.getWeather()
    // then() called when son gets back
    .then(function(data) {
        // promise fulfilled
        if (data.forecast==='good') {
            prepareFishingTrip();
        } else {
            prepareSundayRoastDinner();
        }
    }, function(error) {
        // promise rejected, could log the error with: console.log('error', error);
        prepareSundayRoastDinner();
    });
};

答案 1 :(得分:3)

你的假设是正确的!

例如,$ http和$ resource使用的HttpProvider将成功的响应定义为200到299之间的http响应代码,包括在内。

您可以通过提供自己的HttpProvider来更改此行为。此外,使用HttpProvider的服务可能会覆盖此响应并替换更合适的失败/成功条件。