我一直在阅读Angular承诺从Web服务获取数据,引起我注意的一件事是Angular由于某种原因知道“请求”是否已经完成或被拒绝,Angular如何知道?它检查响应状态代码吗?你能重新定义这些规则吗?
答案 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的服务可能会覆盖此响应并替换更合适的失败/成功条件。